【问题标题】:jQuery Tools Validator: not required, but test if not emptyjQuery 工具验证器:不需要,但如果不为空则测试
【发布时间】:2011-12-11 03:15:05
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery validation jquery-tools


    【解决方案1】:

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

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

    【讨论】:

    • 是的!谢谢!顺便说一句:jQuery 工具验证器不需要 ^ 和 $,它们的“包含”...所以 pattern="(?:|https?://.+)" 有效!谢谢你,托比!
    【解决方案2】:

    您是否有任何理由与 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"    
        }
    });
    

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

    【讨论】:

    • thx ... 我选择了验证器,因为它是轻量级的,它扩展了 css-posibilities,它使用标准的 html5-input-types 进行一般验证......而且它很容易使用。 :-) 但是谢谢!
    【解决方案3】:

    如果您将表单字段指定为

    <input type='url'/>
    

    那么 jQuery Tools Validator 将需要一个有效的 url——你不需要滚动你自己的 url 正则表达式。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-25
      • 2016-12-18
      • 1970-01-01
      • 2021-12-10
      • 2011-12-15
      • 1970-01-01
      • 2019-05-18
      • 2022-01-17
      相关资源
      最近更新 更多