我正在使用the Validator from jQuery Tools来验证我的表单(为什么jquery工具?因为它们是轻量级的并且使用语义HTML5标签,输入类型和参数进行验证)但我有一个问题: 我想让jQuery Tools Validator仅在输入字段为非空时测试/验证输入字段 - 但该字段不是必需的。
在必须进行测试/验证的字段上,我可以使用required="required"
并验证...现在我有一个文本输入字段,用户可以输入URL,这个字段不是必需的但是如果用户将一些数据添加到该字段中,该字段应使用pattern="https?://.+"
进行验证以确保用户输入有效的URL ...如果我添加了pattern-parameter且没有required-parameter,则jQuery Tools Validator会测试/尽管如此,我仍然无法提交表格,直到我输入有效的网址 - 即使我根本不想输入网址!
答案 0 :(得分:3)
您可以尝试修改正则表达式以允许空字符串,例如
pattern="^(?:|https?://.+)$"
答案 1 :(得分:1)
你是否有任何理由与jquery工具验证器绑定?我在http://bassistance.de/jquery-plugins/jquery-plugin-validation/
取得了巨大的成功例如,我添加了一个自定义jQuery验证器字段:
jQuery.validator.addMethod("unittype", function(value, element) {
return jQuery('#fuel option:selected').val() in unitOptions && value in unitOptions[jQuery('#fuel option:selected').val()];
});
jQuery('#fuel').rules("add", {
fueltype:true,
messages:{
fueltype:"Please select a fuel type"
}
});
这只是我的代码中的一个示例,只需将正则表达式替换为方法。
答案 2 :(得分:0)
如果您将表单字段指定为
<input type='url'/>
然后jQuery Tools Validator将需要一个有效的网址 - 你不应该推出自己的网址正则表达式。
如果你没有标记所需的字段,那么验证者只应检查字段是否为非空;如果我理解正确,那就是你(OP)想要的行为。