0

我们的网站有一个注入 jQuery 对话框的表单。输入表单数据并单击提交按钮(一个 jQueryUI 对话框按钮)后,表单首先由 javascript 验证,然后提交到服务器。我发现在将一个值粘贴到一个强制的文本框并提交后,有时当我下次打开表单时,它会尝试立即提交而无需用户单击按钮(我在每次之前使用调试器语句验证了这一点.submit()仅当单击按钮提交表单时才被击中)。

有没有其他人遇到过意外提交表单的实例,除了服务器端验证之外,还有什么方法可以对抗它吗?

为了清楚起见,事件的顺序如下:

  1. 用户单击获取表单(部分视图)并将其注入对话框的添加按钮,然后打开对话框。
  2. 用户将一个值粘贴到强制文本框中(还有其他几个控件)。
  3. 用户单击执行低级别验证的提交按钮并通过 ajax 提交表单,成功后关闭对话框。
  4. 冲洗并重复直到:
  5. 用户单击“添加”按钮,该按钮获取表单并将其注入对话框,该对话框打开并立即提交,服务器验证失败。

Form.submit 回调

    $("#SearchEdit>form").submit(function (e) {
        if (TermPresent()) {
            return true;
        } else {
            e.preventDefault();
            return;
        }
    });

function TermPresent() {
    return ($("textarea#MySearch_SearchTerms").val() != "" ? true : false);
}
4

1 回答 1

2

您可以更改type="submit"type="button",然后从验证代码的底部开始,而不是允许表单自行提交。

于 2013-01-17T15:05:11.613 回答