【问题标题】:jQuery Remote Validation Forces Double-Click to Submit FormjQuery远程验证强制双击提交表单
【发布时间】:2011-01-21 21:45:08
【问题描述】:

我正在尝试远程验证表单域。如果我在页面上时该字段获得焦点,则一切正常。但是,如果字段从不获得焦点,表单需要我点击“提交”按钮两次才能成功提交。

我希望它要么仅验证该字段是否获得焦点,要么以某种方式阻止表单要求两次单击提交。有人有什么想法吗?

$("#form1").validate({
    rules: {
        project: {
            required: true,
            remote: "check.php"
        }
    },
    messages: {
        project: {
            required: "Required.",
            remote: "Check Failed."
        }
    },
});

<input type="text" name="project" id="project" value="X"/>

【问题讨论】:

  • 你有没有深究过这个?
  • 它应该可以工作。您是否尝试过仅使用示例中的一个输入字段?
  • 我遇到了同样的问题,单击 1 会命中字段的远程验证。点击 2 提交表单。为了解决这个问题,我只是将 SUBMIT 从 标记更改为

标签: jquery forms validation


【解决方案1】:
Instead of making ajax setup to false you can just set "project" "remote" async to false like this

$("#form1").validate({
    rules: {
        project: {
            required: true,
            remote: {url:"check.php", async:false}
        }
    },
    messages: {
        project: {
            required: "Required.",
            remote: "Check Failed."
        }
    },
});

【讨论】:

  • 使请求不异步可能会冻结整个 UI。当心。 @Pé de Leão 的肯定回答更好
【解决方案2】:

提交按钮的名称是什么? jQuery Validate 不喜欢“提交”这个名称。我将提交按钮的名称更改为“提交者”,问题就消失了。看看这个链接:https://github.com/jzaefferer/jquery-validation/issues/58

【讨论】:

  • 我确认这行得通。当表单包含其他必填(必需)字段时,其他解决方案(建议添加“async:false”)实际上会导致问题。当“async:false”时,“必填”字段将被忽略,用户可以绕过它并将字段留空。将提交按钮名称替换为“提交者”可以解决此问题。
【解决方案3】:

您可以通过添加以下内容来解决问题:

$.ajaxSetup({
    async: false
});

在调用验证插件之前。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,并且 远程:{url:“check.php”,异步:假} 为我工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      相关资源
      最近更新 更多