【问题标题】:jquery trigger - 'change' functionjquery触发器 - '改变'功能
【发布时间】:2010-07-17 09:44:12
【问题描述】:

我有一个名为“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() 函数。那么我该如何解决呢?我不希望在重新显示表单时清除这些字段。

【问题讨论】:

  • 当您提交表单时,是指何时提交?
  • 是的,当我提交表单时。如果有任何验证错误,页面将重新显示。
  • 有人能帮忙吗? jQuery 有什么方法可以判断表单是否已提交或是否处于初始状态?

标签: jquery


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多