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 - 验证必填字段时如何忽略默认值的主要内容,如果未能解决你的问题,请参考以下文章