jQuery 工具验证器:不是必需的,但如果不为空则进行测试

发布于 2024-12-10 23:51:44 字数 517 浏览 0 评论 0原文

我正在使用 jQuery 工具中的验证器 来验证我的表单(为什么使用 jquery 工具?因为它们是轻量级的)并使用语义 HTML5 标签、输入类型和参数进行验证)但我有一个问题: 我想让 jQuery Tools Validator 仅在输入字段不为空时才测试/验证它 — 但该字段不是必需的。

在必须测试/验证的字段上,我可以使用 required="required"  并且它会验证......现在我有一个文本输入字段,用户可以在其中输入 URL,该字段不是必需的,但如果用户将一些数据添加到该字段中,则该字段应使用 pattern="https?://.+" 进行验证,以确保用户输入有效的网址。 . 如果我添加尽管有模式参数且没有必需参数,jQuery Tools Validator 仍然会进行测试/验证,并且在输入有效 URL 之前我无法提交表单 — 即使我根本不想输入 URL!

I'm using the Validator from jQuery Tools to validate my form (why jquery tools? because they are lightweight and use semantic HTML5 Tags, input-types and params for validation) but I have one problem:
I want to let jQuery Tools Validator test/validate a input-field only if it is not empty — but the field is not required.

On fields that have to be tested/validated, I can use required="required" and it validates … now I have a text-input-field where the user can input a URL, this field is not required BUT if the user adds some data into that field, the field should validate with pattern="https?://.+" to get sure the user is entering a valid url... if I add the pattern-parameter and no required-parameter, jQuery Tools Validator does test/validate nonetheless and I'm not able to submit the form until I entered a valid URL — even if I do not want to enter a URL at all!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

幽梦紫曦~ 2024-12-17 23:51:44

您可以尝试修改正则表达式以允许空字符串,例如

pattern="^(?:|https?://.+)$"

You could try modifying your regex to allow the empty string, such as

pattern="^(?:|https?://.+)$"
温柔戏命师 2024-12-17 23:51:44

你有什么理由依赖 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"    
    }
});

这只是我的代码中的一个示例,只需将正则表达式替换为方法即可。

Is there any reason you're tied to jquery tools validator? I've had great success with : http://bassistance.de/jquery-plugins/jquery-plugin-validation/

So for example I'd add a custom jQuery validator field:

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"    
    }
});

That was just an example from my code, just substitute the regex into the method.

塔塔猫 2024-12-17 23:51:44

如果您指定表单字段,那么

<input type='url'/>

jQuery Tools Validator 将需要一个有效的 url - 您不需要滚动自己的 url 正则表达式。

如果您没有将该字段标记为必填,那么验证器应该仅在该字段非空时检查该字段;如果我理解正确的话,这就是你(OP)想要的行为。

If you specify your form field as

<input type='url'/>

then jQuery Tools Validator will require a valid url--you shouldn't need to roll your own url regex.

And if you don't mark that field required, then the validator should only check the field when it's non-empty; which, if I understood correctly, is the behavior you (OP) want.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文