我正在使用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" />
我需要知道的是如何在验证规则中指定,如果输入框包含默认消息或空值,则插件会引发必填字段错误。
非常感谢。
答案 0 :(得分:19)
我认为这更好:
jQuery.validator.addMethod("defaultInvalid", function(value, element)
{
return !(element.value == element.defaultValue);
});
答案 1 :(得分:5)
我通过使用validator.addMethod创建自定义验证来解决问题,这非常简单。
我在下面粘贴了我的验证块的片段:
//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"
}
})
}
我对表格中具有默认值的所有元素使用了相同的内容。这非常有效。
答案 2 :(得分:2)
对我而言,上述内容仅适用于以下更改:
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;
}
});
答案 3 :(得分:2)
如果您想向其添加自定义错误消息,请使用此功能。
jQuery.validator.addMethod("defaultInvalid", function(value, element) {
return !(element.value == element.defaultValue);
}, 'Custom Error Message for this field');
答案 4 :(得分:1)
只需在规则部分后添加
onfocusout: function(element) { $(element).valid(); }
一切都会好的。
答案 5 :(得分:0)
我认为您需要添加“默认”案例才能使其正常运行:
jQuery.validator.addMethod("defaultInvalid", function(value, element) { switch (element.value) { case "$defaultText": if (element.name == "$defaultText") return false; break; default: return true; break; } });
答案 6 :(得分:0)
$.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)”,因为在某些情况下我收到错误消息“依赖性不匹配”。
答案 7 :(得分:0)
我对jquery.validationEngine做了一些补丁,允许忽略某些复杂形式的输入字段。我做了以下更改:
在您的情况下,您可以使用skipValidate类的修改来执行此操作。 你可以在这里找到修补过的脚本以及英文过滤器(fr也可用):
jquery.validationEngine.js Patched
jquery.validationEngine-en.js Patched
我应该将这些更改提交到git hub,但现在没有时间这样做。
Jerome Godbout
Panthera Dental