使用jquery表单向导编写自定义验证

时间:2012-01-23 14:39:38

标签: jquery jquery-ui jquery-form-wizard

我正在使用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消息。

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

1 个答案:

答案 0 :(得分:0)

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

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

如果我理解正确,您正在使用验证插件 验证输入,但网址规则不支持您的需求?如果是这样, 您可以使用添加新方法 http://docs.jquery.com/Plugins/Validation/Validator/addMethod 你可以使用正则表达式和你喜欢的任何东西。

那就是说,似乎向导中的beforeSend方法没有 即使你返回false,也切断了ajax调用。这是一个错误,我 将在即将发布的版本中做出注释以便修复它。

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

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

我希望这会有所帮助。