在chrome中不会触发jquery文本更改事件

时间:2014-09-10 14:39:29

标签: javascript jquery asp.net google-chrome

我已经尝试将jQuery change事件放在document.ready中,但没有运气。 change事件在Firefox和IE中有效,但在Chrome中无效。更改ctl00_ContentPlaceHolder1_Txt_RegNo文本框中的值时,甚至不会显示警告框。

但是当我输入文本框并使用文本框中的退格键删除值时,它就会在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()
                }
            }
        })
    });
});

3 个答案:

答案 0 :(得分:0)

尝试使用jquery的keypress事件,

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

如果您想在用户完成输入后获取文本框的值,则可以使用blur事件。一旦文本框失去焦点,就会调用此事件。

答案 1 :(得分:0)

相反更改和按键事件我使用了jquery的focusout事件,它根据我的要求工作正常

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

答案 2 :(得分:0)

正如here所写,您可以使用monitorEvents JavaScript函数来显示在元素上触发的所有事件。

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

在Chrome中,您会发现,只有input事件在完成时才会被触发。

input事件在所有浏览器中都不起作用,因此如果您将其与change事件结合使用,它应该适用于大多数浏览器。

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