在HTML页面上,我有一个输入框,当它为空时,上面有一个'水印'。 (例如:“在这里输入文字......”)。有点像这样:http://digitalbush.com/projects/watermark-input-plugin/ - 但是自定义写的。
问题在于我无法弄清楚如何使用jQuery验证插件(http://docs.jquery.com/Plugins/Validation/)来验证此字段,以便它将我的水印文本视为字段为空。
我在jQuery验证器中找不到一个选项让我为字段有效时指定一个自定义规则,有吗?我可以找到允许我指定是否需要根据自定义逻辑验证 字段的选项,而不是如何验证它。
我错过了什么?
答案 0 :(得分:6)
感谢Kazar为我提供了链接,我想出了以下解决方案(如果有人有兴趣的话):
function notWatermark(value, element){
return value != 'enter text...';
}
$.validator.addMethod("notWatermark", notWatermark, "Field cannot be empty.");
$('#SearchForm').validate({
rules: {
SomeField: {
required: true,
notWatermark: true
}
},
答案 1 :(得分:5)
我正在使用jQuery的Watermark插件,但我的情况类似:
http://code.google.com/p/jquery-watermark/
它使用类名来显示水印。 (我不确定DigitalBrush版本是否使用了类。)我修改了上面的函数,使用jQuery的hasClass()函数来确定该字段是否根据当前分配的类被评估为“空”。
function notWatermark(value, element){
return !$(element).hasClass("waterMarkClass");
}
$.validator.addMethod("notWatermark", notWatermark, "Required.");
答案 2 :(得分:3)
查看此博文:
http://randomactsofcoding.blogspot.com/2008/10/starting-with-jquery-how-to-write.html
告诉您如何为字段构建自定义验证规则。
答案 3 :(得分:1)
为每个测试盒使用唯一的水印标签时(例如“输入名字”,“输入姓氏”......),您可以将脚本改进为:
function noWatermark(value, element) {
return value.toLowerCase() != element.defaultValue.toLowerCase();
}
$.validator.addMethod("noWatermark", noWatermark, "required.");
这也会从脚本中删除硬编码文本。
答案 4 :(得分:0)
不确定验证插件的工作原理,但这是一个可用的独立模块。
var SetWatermark = function( oElemToWatermark, sWatermark )
{
var CheckFocus = function(oEvent)
{
var oElem = $(this);
if ( oElem.val() == oElem.data("Watermark") )
oElem.val("").css("color", "");
}
var CheckBlur = function(oEvent)
{
var oElem = $(this);
if ( oElem.val().length == 0 )
oElem.val( oElem.data("Watermark") ).css("color", "Grey");
}
// HTML5 (simple route)
if ( oElemToWatermark[0].placeholder != undefined )
oElemToWatermark[0].placeholder = sWatermark;
// pre HTML5 (manual route)
else if (oElemToWatermark.data("Watermark") == undefined)
oElemToWatermark .data("Watermark", sWatermark)
.val(sWatermark)
.on("focus", CheckFocus )
.on("blur", CheckBlur );
}
var GetWatermarkText = function(oElem)
{
if (oElem[0].plaeholder != undefined)
return oElem[0].placeholder;
else if ( oElem.data("Watermark") != undefined )
return oElem.data("Watermark");
else
{
alert("The element " + oElem[0].id + " does not have a Watermark value.");
return "";
}
}
var GetWatermarkValue = function(oElem)
{
var sVal = oElem.val();
var sWatermark = oElem.data("Watermark");
if (oElem[0].placeholder != undefined
|| sWatermark == undefined
|| sWatermark != sVal)
return sVal;
else if (sVal == sWatermark)
return "";
}