2013-09-30 6 views
0

Каждый раз, когда я теряю фокус на поле ID, вызывается alert("Start AJAX: " + EmplID);, но вызовы AJAX выполняются два раза: во второй раз поле ID теряет фокус, а не в первый раз. Все предложения были бы полезными.jQuery ajax вызов не запускается первый вызов

$("#ID").focusout(function() { 
    var EmplID = $(this).val(); 
    alert("Start AJAX: " + EmplID); 
    $.ajax({ 
     type: "POST", 
     url: "program_includes/Employee_help.php", 
     cache: false, 
     data: { 
      value: 4, 
      id: EmplID 
     } 
    }).done(function(msg) { 
     alert(msg); 
     parseScript(msg); 
     $.ajax({ 
      type: "POST", 
      cache: false, 
      url: "program_includes/Customer_help.php", 
      data: { 
       value: 4, 
       id: $("#Kundennummer").val(), 
       Employee: "Yes" 
      } 
     }).done(function(msg) { 
      alert(msg); 
      parseScript(msg); 
      $("#Name").val($("#customers_Name").val()); 
     }).fail(function(msg) { 
      alert("Fail2 : " + msg); 
     }); 
    }).fail(function(msg) { 
     alert("Fail1 : " + msg); 
    }); 
}); 
+8

Мое предложение было бы ** не ** использовать 'alert' для отладки. Это не 1997 год. Используйте отладчик для отладки. В вашем браузере встроен один. Это всегда моя рекомендация, но особенно актуальная здесь, поскольку «предупреждение» мешает логике фокуса ... –

+0

'console.log' будет лучше, чем' alert' –

+0

Кажется, решила проблему. Благодарю. – user2831126

ответ

0

Вслед за T.J. Crowder

Моего предложения были бы не использовать предупреждение для отладки. Это не 1997 год. Используйте отладчик для отладки. В вашем браузере встроен один. Это всегда моя рекомендация, но особенно актуальна здесь, поскольку предупреждение мешает логике фокуса.

Это довольно ясный момент, чтобы не использовать оповещения, если вы не занимаетесь мобильной разработкой. Вы должны использовать консоль. Так просто заменить

alert(); //badness 

с

console.info(); //goodness, look at the console 

Затем нажмите F12 в вашем браузере и вы увидите журналы в консоли. Даже новейшие IE имеют JS-консоль в настоящее время.

+0

Я не уверен, что это все еще в самой последней версии IE, но для более ранних версий вам нужно нажать F12 до того, как код будет выполнен, чтобы существовал объект 'console'. –

+0

good point @AnthonyGrist –

+0

Консоль работает отлично, не открывая консоль в IE, по крайней мере в IE10 и IE8. Так что с 2008 года он работает. – user2831126

0

Вместо фокуса попробуйте использовать размытие. Документы JQuery говорят, как показано ниже:

The focusout event is sent to an element when it, or any element inside of it, loses 
focus. This is distinct from the blur event in that it supports detecting the loss of  
focus on descendant elements (in other words, it supports event bubbling). 

Или используйте event.stopPropagation() в обработчике focusout

+0

Это ничего не меняло, но удаление предупреждений решило проблему. Спасибо за ваш ответ. – user2831126

Смежные вопросы