2014-09-10 97 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 
)};