jquery触发器 – ‘更改’function

我有一个名为“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(); } }); 

我还有一个触发器,如果​​由于validation错误重新显示表单,它将保留视图。

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

现在当我发布表单时,触发器运行并调用更改处理程序,当然它运行clearFields()函数。 那我怎么能解决这个问题呢? 我不希望在重新显示表单时清除字段。

尝试使用自定义事件处理程序,如下所示:

 $("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时,它会按预期工作,但对于显示表单而不清除输入字段的特殊情况,您只需触发新的自定义事件处理程序即可。