1

我正在使用jquery Form Wizard,并且想编写自定义验证规则。

我当前的问题是我想将字段验证为 URL,但如果用户忘记添加“http://”前缀,我不想拒绝这个,而是在服务器端添加前缀。

我目前正在使用url该类进行此验证,它不支持此选项。为了解决这个问题,我想使用自定义正则表达式而不是url验证器(基本上,只需检查 URL 字段是否有句点并且至少有五个字符长)。

我无法让 jquery-ui-form-wizard 使用正则表达式或调用回调函数进行验证。注意 - 我想验证每一步,而不仅仅是提交。

我将以下内容添加到表单向导选项中,并调用了我的回调 - 但即使它返回 false,单击下一步仍会进入下一页:

remoteAjax: {
  "page1" : {
    url: "./validateWizard1",
    dataType: "json",
    beforeSend: function() {
      // This code is called before "page1" is turned.
      return false;
    },
    success: handleValidateSubmit
  }
}

我想设置一个自定义错误消息(以标准方式显示到验证插件),或者重用 URL 消息。

实现这一目标的最佳方法是什么?

4

1 回答 1

0

这是 jquery-form-wizard 的作者 Jan Sundman 的回答(他让我代替他发布):

如果我正确理解您的问题,您想在使用 remoteAjax 将请求发送到服务器之前在 beforeSend 方法中进行验证吗?

如果我理解正确,您正在使用验证插件来验证输入,但 url 规则不支持您的需要?如果是这样,您可以使用http://docs.jquery.com/Plugins/Validation/Validator/addMethod添加新方法,您可以 在其中使用 regexp 和任何您喜欢的方法。

也就是说,即使您返回 false,向导中的 beforeSend 方法似乎也不会中断 ajax 调用。这是一个错误,我将在即将发布的版本中进行修复。

要解决此问题,请尝试改用 beforeSubmit 回调(由表单插件提供)。例如:

remoteAjax: {
 "page1" : {
   url: "./validateWizard1",
   dataType: "json",
   beforeSubmit: function() {
     // This code is called before "page1" is turned.
     return false;
   },
   success: handleValidateSubmit
 }
}

我希望这有帮助。

于 2012-01-23T15:23:39.570 回答