jquery.validation - 验证必填字段时如何忽略默认值

Posted

技术标签:

【中文标题】jquery.validation - 验证必填字段时如何忽略默认值【英文标题】:jquery.validation - how to ignore default values when validating mandatory fields 【发布时间】:2011-02-13 14:30:10 【问题描述】:

我正在使用 jquery 验证插件来验证注册表。

每个文本输入字段都有预先填写为输入框中的值的说明

例如:对于文本输入框 id='Name',默认值将设置为“Enter Your Name”。我已经粘贴了下面的示例代码:

<input type="text" id="Name" value="Enter Your Name" onfocus="if(this.value == 'Your Name')this.value = '';" type="text" class="required" onblur="if(this.value == '')this.value='Your Name';" size="25" />

我需要知道的是如何在验证规则中指定,如果输入框包含默认消息或空值,插件会抛出必填字段错误。

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

我认为这样更好:

jQuery.validator.addMethod("defaultInvalid", function(value, element) 

    return !(element.value == element.defaultValue);
);

【讨论】:

或者直接返回 !(element.value == element.defaultvalue); 对于该线程的新来者,将上述答案相应地替换为已接受的答案,第 4-12 行。伟大的工作家伙。【参考方案2】:

我通过使用 validator.addMethod 创建自定义验证找到了解决问题的方法,这真的很简单。

我在下面粘贴了我的验证块的 sn-p:

   //1. Define custom validation 
    $(document).ready(function() 
    
    jQuery.validator.addMethod("defaultInvalid", function(value, element) 
    
     switch (element.value) 
     
      case "Your Name": -- this will be the default value in the Name text box
       if (element.name == "Your Name")
          return false;
     
    
    //2. Include custom validation in the rules for your element
    $("#aspnetForm").validate(
    
      rules: 
      
       Name: "required defaultInvalid"
      ,
      messages: 
      
       Name: "Please input your name"
      
    )
   

我对表单中具有默认值的所有元素都使用了相同的方法。这很好用。

【讨论】:

【参考方案3】:

对我而言,上述内容仅适用于以下更改:

jQuery.validator.addMethod("defaultInvalid", function(value, element) 

    switch (element.value) 
    
        case "Your Name":
            if (element.name == "element_name") return false;
            break;
        default: return true; 
            break;
    
);

【讨论】:

【参考方案4】:

如果您想向其中添加自定义错误消息,请使用它。

jQuery.validator.addMethod("defaultInvalid", function(value, element) 
    return !(element.value == element.defaultValue);
, 'Custom Error Message for this field');

【讨论】:

谢谢...正是我想要的!【参考方案5】:

在规则部分之后添加这个

onfocusout: function(element) $(element).valid();

一切都会好的。

【讨论】:

【参考方案6】:

我认为您需要添加“默认”案例才能使其正常工作:

jQuery.validator.addMethod("defaultInvalid", function(value, element) 开关(元素。值) 案例“$defaultText”: if (element.name == "$defaultText") 返回假; 休息; 默认: 返回真; 休息; );

【讨论】:

【参考方案7】:
$.validator.addMethod("defaultInvalid", function(value, element, param)
        var r = $(element).rules();
        var req=(this.objectLength(r))?r.required:false; // OR may be var req=r.required; // true, false or undefined.
        return !req || (value!=param);
    ,$.validator.messages.required);

...

,rules:
            message: 
                defaultInvalid:$('#message').attr('placeholder')
            
        

此类功能考虑了“必填”和“可选”字段的情况。

表达式“!req”故意替换“this.optional(element)”,因为在某些情况下我收到错误消息“依赖不匹配”。

【讨论】:

【参考方案8】:

我对 jquery.validationEngine 做了一些补丁,以允许忽略某些复杂表单的某些输入字段。我做了以下更改:

添加对 jquery.dropkick 选择蒙皮验证位置的支持 为 ve_invalid 值条目添加无效的选择字段(以便能够在没有有效选择的情况下显示指令) 添加 hideAllInstant 以立即删除验证 如果原始输入被隐藏,则添加对 jquery.simpleImageCheck 元素的支持,改为使用 simpleImageCheck 的位置 添加 skipValidate 类以避免在不禁用​​某些字段的情况下验证它们 修复与 prompt_err 未定义匹配时的错误,目标正在生成错误 添加 clearField 支持以避免验证 jquery.clearField.js 添加 validateHiddenFields,对隐藏和非隐藏字段进行验证

在您的情况下,您可以使用对 skipValidate 类的修改来执行此操作。 您可以在此处找到已修补的脚本以及英文过滤器(也可以使用英文过滤器):

jquery.validationEngine.js Patched

jquery.validationEngine-en.js Patched

我应该将这些更改提交到 git hub,但现在没有时间这样做。

杰罗姆·戈布特

Panthera 牙科

【讨论】:

以上是关于jquery.validation - 验证必填字段时如何忽略默认值的主要内容,如果未能解决你的问题,请参考以下文章

jquery-validation JQ 表单验证

jquery mobile 和 jquery.validation 无线电验证错误消息不会消失

jQuery Validation让验证变得如此easy

使用 Jquery 和 Zend 进行表单验证

jQuery Validation Engine 表单验证

jquery.validation.js 表单验证