2010-07-16 5 views
2

У меня есть переключатель с переключателем «pick_up_point», и у меня есть обработчик изменений для обнаружения переключателя, который установлен. В обработчике изменений я вызываю функцию clearFields(), которая в основном очищает поля ввода.jquery trigger - функция «change»

function clearFields() 
{ 
$("#Enquiry_start_point").val(""); 
$("#Enquiry_start_town").val(""); 
$("#Enquiry_start_postcode").val(""); 
} 

$("input[name='pick_up_point']").change(function() 
{ 
if($("input[name='pick_up_point']:checked").val() == "pick_up_airport") 
{ 
    $("#pick_up_airport_div").slideDown(); 
    $("#start_point_div").hide(); 
    clearFields(); 
} 
}); 

У меня также есть триггер, который будет удерживать взгляд, если форма перерисована из-за ошибки проверки.

$('input[name=\'pick_up_point\']').trigger('change'); 

Теперь, когда я отправляю форму триггер запускается и вызывает обработчик изменения, которые, конечно, работает на clearFields функции(). Итак, как я могу обойти это? Я не хочу, чтобы поля очищались, когда форма снова отображается.

+0

Когда вы публикуете форму, то есть когда вы ее отправляете? – hookedonwinter

+0

Да, это правильно, когда я отправляю форму. Страница будет отображаться повторно, если есть ошибки проверки. – GSTAR

+0

Любой, кто может помочь? Есть ли способ, которым jQuery может определить, была ли форма отправлена ​​или находится ли она в исходном состоянии? – GSTAR

ответ

5

Попробуйте использовать обработчик событий, например, так:

$("input[name='pick_up_point']").change(function() 
{ 
    $(this).trigger("displayForm"); 
    clearForm(); 
}); 

$("input[name='pick_up_point']").bind("displayForm", function() { 
if($("input[name='pick_up_point']:checked").val() == "pick_up_airport") 
{ 
    $("#pick_up_airport_div").slideDown(); 
    $("#start_point_div").hide(); 
} 
}); 

Таким образом, вместо запуска события изменения, вызвать обработчик displayForm, как это:

$('input[name=\'pick_up_point\']').trigger('displayForm'); 

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

+0

Ничего себе, это потрясающе! Благодарю. – GSTAR

+0

+1 Хорошее использование пользовательских событий –