2016-04-04 19 views
1

ile bir alanın dışına nasıl tıklatılacağını taklit etme Formum üzerinde, diğer iki alanın değerlerini alan bir düğmem var. Sorun şu ki, bu alanlardan birine yazdıktan sonra düğmeyi tıklatırsam, ancak tıklamadan önce, yazdığımdan önce (genellikle boş) o alanın değerini alır. Javascript kullanarak bu alanın dışına nasıl tıklanabilirim? Düğme tıklatıldığında (kodun geri kalanı benimsemeden önce) odağı farklı bir alana ayarlamayı denedim, ancak bazı nedenlerden dolayı hala alanın eski değerini alıyor.Dynamics CRM: Javascript

function btnCalculate_onClick() { 
    Xrm.Page.ui.controls.get("zipCodeFieldName").setFocus(); 

    strStreet = Xrm.Page.getAttribute("streetFieldName").getValue(); 
    strCity = Xrm.Page.getAttribute("cityFieldName").getValue(); 
    strState = Xrm.Page.getAttribute("stateFieldName").getValue(); 

    $.ajax({ 
    url: 'https://maps.googleapis.com/maps/api/geocode/xml?address=' + strStreet + ',' + strCity + ',' + strState + '&sensor=false', 
    type: 'GET', 
    dataType: 'text', 
    timeout: 1000, 
    error: function() { 
     alert('Error loading XML document'); 
    }, 
    success: function(xml) { 
     // do something with xml 
    } 
    }); 
} 

sorun ilk düğmesini tıklamadan önce şehir alanının dışına tıklayın sürece strCity null olarak kabul ediliyor olmasıdır:

İşte benim kod yapıdır.

+0

bir bağlantı ya da öylesine bir kod parçası sonrası Lütfen Bakacak bir şeyimiz var. – Sparky256

+0

Sadece kodumu eklemek için gönderimi güncelledim. – Mike

+1

[blur olayı] (https://developer.mozilla.org/en-US/docs/Web/Events/blur) – Cypher

cevap

0

jQuery'ye ile bir click olayı tetikleyebilir: Ben setFocus şey çalışmış olurdu sanırdım here

0

$("#foo").trigger("click"); 

fazla bilgi. Bu benim kullandığım ne bu

function btnCalculate_onClick() { 
    $(document.body).click(); 

    setTimeout(doAddressStuff, 10); 
} 

function doAddressStuff() { 
    strStreet = Xrm.Page.getAttribute("streetFieldName").getValue(); 
    strCity = Xrm.Page.getAttribute("cityFieldName").getValue(); 
    strState = Xrm.Page.getAttribute("stateFieldName").getValue(); 

    $.ajax({ 
     url: 'https://maps.googleapis.com/maps/api/geocode/xml?address=' + strStreet + ',' + strCity + ',' + strState + '&sensor=false', 
     type: 'GET', 
     dataType: 'text', 
     timeout: 1000, 
     error: function() { 
     alert('Error loading XML document'); 
     }, 
     success: function(xml) { 
     // do something with xml 
     } 
    }); 

} 
1

deneyin

function blurActiveControl() { 
    var elid = document.activeElement.id; 
    if (elid && elid != null && elid != '') document.activeElement.blur(); 
} 

Desteksiz ama güvenli ve etkili sizin durumunuzda kullanım olacaktır:

function btnCalculate_onClick() { 
    blurActiveControl(); 

    // rest of code 
} 
İlgili konular