Dynamics 365 Javascript - İki Kere Alert Verme Sorunu

Bazı durumlarda alan kontrolü yaparken kullanıcıya uyarı veririz ve alanın değerini de null yaparız. Bu gibi durumlarda ekrana verilen uyarının iki kere geldiğini görürüz . Javascript kodumuzu debug ettiğimizde düzgün çalıştığını ama normal durumda iki kere alert verdiğini farkederiz.

Örnek vermek gerekirse ,  telefon alanları için formatlama yapalım . Belli durumlar haricinde ekrana "2124440011 şeklinde en az 10 haneli bir telefon numarası giriniz" alertini verelim ve  telefon alanının değerine null atayalım. İşte bu durumda  ekrana verilen "2124440011 şeklinde en az 10 haneli bir telefon numarası giriniz" alerti 2 kere görünecektir..

Örnek Kod Parçası

 alert('2324440011 şeklinde en az 10 haneli bir telefon numarası giriniz.');
 Xrm.Page.getAttribute("fieldname").setValue(null);

function TelephoneFormat(fieldName, ulkefieldname) {
    try {
        var langId = Xrm.Page.context.getUserLcid();
        if (langId != 1055)
            langId = 1033;

        var oField = GetAttribute(fieldName);

        if (GetValue(fieldName) != null && GetValue(fieldName) != "") {
            var ulke = GetValue(ulkefieldname);
            var _ulkeid = null;

            if (ulke != null && ulke[0] != null && ulke[0].id != null)
                _ulkeid = ConverttoStringFromGuid(ulke[0].id);

            if (_ulkeid != null) {
                var sTmp = oField.getValue().replace(/[^0-9]/g, "");

                if (_ulkeid == GetTurkiyeId()) {
                    switch (sTmp.length) {
                        case 13:
                            oField.setValue("+" + sTmp.substr(0, 3) + " " + sTmp.substr(3, 3) + " " + sTmp.substr(6, 7));
                            break;
                        case 12:
                            oField.setValue("+" + sTmp.substr(0, 2) + " " + sTmp.substr(2, 3) + " " + sTmp.substr(5, 7));
                            break;
                        case 11:
                            oField.setValue("+9" + sTmp.substr(0, 1) + " " + sTmp.substr(1, 3) + " " + sTmp.substr(4, 7));
                            break;
                        case 10:
                            oField.setValue("+90 " + sTmp.substr(0, 3) + " " + sTmp.substr(3, 7));
                            break;
                        case 7:
                            oField.setValue("+90 232 " + sTmp.substr(0, 3) + sTmp.substr(3, 4));
                            break;
                        default:
                            alert('2324440011 şeklinde en az 10 haneli bir telefon numarası giriniz.');
                            SetValue(fieldName, null);
                            break;
                    }
                }
                else {
                    TelephoneFormat2(fieldName);
                }
            }
            else {
                if (langId == 1055)
                    CommonAlert("Telefon numarası girmek için ilk önce ülke seçilmelidir.");
                else
                    CommonAlert("Please , firstly select country.");

                SetValue(fieldName, null);
            }
        }
    }
    catch (e) {
        CommonAlert("An error occured in TelephoneFormat Function.\nError: " + e.message);
    }
}


Çözüm 

Çözüm için alanın değerini null yaptığımız satırı setTimeout ile kullanalım . Bu şekilde ekrana uyarı 1 kere gelecektir.

 alert('2324440011 şeklinde en az 10 haneli bir telefon numarası giriniz.');
 setTimeout(function () {
                    Xrm.Page.getAttribute("fieldname").setValue(null);
                }, 200);


Hiç yorum yok:

Yorum Gönder