2014-09-10 58 views
0

我已經嘗試將jQuery change事件放入document.ready但沒有運氣。 change事件在Firefox和IE中運行,但不在Chrome中運行。在更改ctl00_ContentPlaceHolder1_Txt_RegNo文本框中的值時,即使警報框也不顯示。jquery文本更改事件不是在Chrome中觸發的

但是,當我輸入文本框,並從文本框中使用退格刪除值,然後它在鉻中工作。它應該在第一次使用chrome更改文本框中的值時工作。

腳本:

$("#ctl00_ContentPlaceHolder1_Txt_RegNo").change(function() { 
    alert("done"); 
    var regno = $("#<%= Txt_RegNo.ClientID %>").val(); 
    var fleetno = $("#<%= Txt_FleetNo.ClientID %>"); 
    var customername = $("#<%= txtCustomerName.ClientID %>"); 
    var ridername = $("#<%= txtRiderName.ClientID %>"); 
    var phoneno = $("#<%= txtPhoneNo.ClientID %>"); 
    var email = $("#<%= txtEmail.ClientID %>"); 
    var chassis = $("#<%= txtchassis.ClientID %>"); 
    var ddlmodel = $("#<%= ddl_Model.ClientID %>"); 
    var ddltype = $("#<%= ddl_type.ClientID %>"); 
    var ddlcolor = $("#<%= ddl_color.ClientID %>"); 
    var ddl_year = $("#<%= ddlyear.ClientID %>"); 
    var KMS = $("#<%= txtKMSRUN.ClientID %>"); 
    var ddladvisor = $("#<%= ddl_ServiceAdvisor.ClientID %>"); 
    var expirydate = $("#<%= txtexpirydate.ClientID %>"); 
    var notes = $("#<%= txtnotes.ClientID %>"); 
    var data = { REGNO: regno }; 
    var jsonData = JSON.stringify(data); $.ajax({ 
     type: "POST", 
     url: "JobCard.aspx/Populate_Reg", 
     data: jsonData, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      if (data.d.length > 0) { 
       var e; 
       for (var i = 0; i < data.d.length; i++) { 
        fleetno.val(data.d[i].FleetNO); 
        customername.val(data.d[i].CUSTOMER_NAME); 
        ridername.val(data.d[i].RIDERNAME); 
        phoneno.val(data.d[i].PHONENO); 
        email.val(data.d[i].EMAIL); 
        chassis.val(data.d[i].CHASSISNO); 
        ddlmodel.val(data.d[i].MAKE); 
        ddltype.val(data.d[i].MODEL); 
        ddlcolor.val(data.d[i].color); 
        ddl_year.val(data.d[i].Year); 
        KMS.val(data.d[i].KMSRUN); 
        ddladvisor.val(data.d[i].ADVISORID); 
        expirydate.val(data.d[i].EXPIRYDATE); 
        notes.val(data.d[i].NOTES); 
        e = expirydate.val() 
       } 

       var d1 = Date.parse(e); 
       var dt = new Date(d1); 
       var dateExpiry = dt.getMonth() + 1 + "/" + dt.getDate() + "/" + dt.getFullYear(); 
       var d = new Date; var datenow = d.getMonth() + 1 + "/" + d.getDate() + "/" + d.getFullYear(); 

       if (dateExpiry <= datenow) { 
        checkRegNo() 
       } 
      } 
     }) 
    }); 
}); 

回答

0

根據我的要求,而不是改變,按鍵事件,我用的jQuery focusOut事件和它`做工精細

$("#ctl00_ContentPlaceHolder1_Txt_RegNo").focusout(function() { 
    //your method body 
)}; 
+0

當它或它內部的任何元素失去焦點時,將把焦點發送到一個元素。這與blur事件不同之處在於它支持檢測父元素的焦點丟失(換句話說,它支持事件冒泡)。 – VPK 2014-09-10 15:13:34

0

嘗試使用keypress事件這樣的jQuery,

$("#ctl00_ContentPlaceHolder1_Txt_RegNo").keypress(function() { 
    //your method body 
)}; 

如果你想一旦用戶完成錄入得到文本框的值,那麼你可以使用blur事件。一旦文本框失去焦點,此事件將被調用。

+0

檢查更新後的答案@Siddiq Baig。 – VPK 2014-09-10 14:51:29

+0

謝謝,但有一個自動完成附加文本框,以便按鍵事件不適合在這裏 – 2014-09-10 15:05:58

0

書面here,您可以使用monitorEvents JavaScript函數來顯示所有的事件觸發的元素。

monitorEvents($('#ctl00_ContentPlaceHolder1_Txt_RegNo')[0]); 

在Chrome中,你會發現,只有input事件在atocomplete的一觸即發。

input事件在所有瀏覽器中都不起作用,所以如果將它與change事件結合使用,它應該可以在大多數瀏覽器中使用。

$('#ctl00_ContentPlaceHolder1_Txt_RegNo').on('change input', function() { 
    // Handle event 
)};