我有一个名为“pick_up_point”的单选按钮,我有一个更改处理程序来检测已检查的单选按钮。在更改处理程序中,我调用了一个函数“clearFields()”,它基本上清除了输入字段。
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 :(得分: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();
}
});
因此,不是触发change事件,而是触发自定义displayForm
处理程序,如下所示:
$('input[name=\'pick_up_point\']').trigger('displayForm');
现在,当change
被触发时,它会按预期工作,但是对于显示表单而不清除输入字段的特殊情况,您只需触发新的自定义事件处理程序。