2014-09-10 4 views
0

Я уже пытался поставить событие jQuery change внутри document.ready, но не повезло. Событие change работает в Firefox и IE, но не в Chrome. Даже поле предупреждения не появляется при изменении значений в текстовом поле ctl00_ContentPlaceHolder1_Txt_RegNo.событие смены текста jquery не запускается в chrome

Но когда я печатаю текстовое поле и удаляю значение с помощью backspace из текстового поля, он работает в 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

вместо изменить и нажатие клавиши событие я использовал focusout событие JQuery и `s работает нормально в соответствии с моим требованием

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

Событие фокуса отправляется элементу, когда он или любой элемент внутри него теряет фокус. Это отличается от события размытия тем, что оно поддерживает обнаружение потери фокуса из родительских элементов (другими словами, оно поддерживает пузырьки событий). – VPK

0

Попробуйте использовать keypress событие JQuery, как это,

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

Если вы хотите, чтобы получить значение текстового поля, как только пользователь закончил печатать, то вы может использовать событие blur. Это событие будет вызываться, как только текстовое поле теряет фокус.

+0

Проверьте обновленный ответ @Siddiq Baig. – VPK

+0

спасибо, но есть автозаполнение, прикрепленное текстовым полем, так что событие нажатия клавиши здесь не подходит –

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 
)}; 
Смежные вопросы