使用jquery.validationEngine.js处理默认表单值

时间:2011-05-21 06:27:36

标签: javascript jquery validation

我正在使用 jquery.validationEngine.js 进行表单验证。

我从http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/

下载了这个js

这个网站。但它不能用于检查默认值的验证,例如我有名字字段,其值为“名字”。我想验证检查该字段不应该是空白但是它不起作用,因为它包含默认值“名字”。

此外,我希望这应该在 jquery.validationEngine.js 文件中工作,因为我必须在表单和表格上进行许多验证。我正在使用这个js。

我的字段是

<input type="text" id="Uname" name="Uname" value="User Name" onfocus="if(this.value=='User Name')this.value='';" onblur="if(this.value=='')this.value='User Name';" />

如果有人使用此文件,请告知我&amp;有助于解决这个问题。

3 个答案:

答案 0 :(得分:1)

如果您希望使用validationEngine以您描述的方式验证表单,则根据文档似乎至少有三种解决方案。

1)您可以在翻译文件中为每个默认文本值创建一个新的自定义正则表达式,然后将该自定义正则表达式添加到相关的表单项。这可能是您最狡猾的选择,因为您需要使用负向前瞻或类似的东西才能使正则表达式正确。

2)让验证者调用您编写的一个或多个函数来处理特殊情况。我不知道validationEngine是否允许你将参数传递给函数 - 文档没有说明 - 所以我猜它没有。这可能意味着您需要为每个默认值编写单独的函数,或者使用全局变量来指示您要检查的默认值。代码段中Uname字段的功能可能如下所示:

function checkUname(field, rules, i, options){
  if (field.val() == "User Name") {
     return "You must type in your username.";
  }

定义该函数后,您可以使用类似的东西来使用它:

<input type="text" class="form validate[required,funcCall[checkUname]]" id="Uname" name="Uname" value="User Name" onfocus="if(this.value=='User Name')this.value='';" onblur="if(this.value=='')this.value='User Name';" />

3)您可以编写单个JavaScript函数,该函数遍历表单中的每个字段,如果找到默认值,则将其更改为空字符串。然后将该函数附加到表单中的onsubmit事件。这可能是最简单的选项,但它取决于在validationEngine代码之前运行的函数。如果情况并非如此,则无效。

答案 1 :(得分:1)

这是一个很好的例子 How do you validate optional fields with default value?

否则,请将我发布的问题视为与可能的更改相同的问题

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
  if (element.value == element.defaultValue) return false;
}

而不是开关/案例

<input type="text" id="Uname" name="Uname" value="User Name" onfocus="if(this.value==this.defaultValue) this.value=''" 
onblur="if(this.value=='') this.value=this.defaultValue" />

答案 2 :(得分:0)

您应该使用HTML5 placeholder属性而不是JavaScript来设置占位符值。