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

Handling default form values with jquery.validationEngine.js

本文关键字:默认 表单 处理 js jquery validationEngine 使用      更新时间:2023-09-26

我正在使用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';" />

如果有人使用此文件,请告诉我并帮助解决此问题。

如果您希望

使用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事件。 这可能是最简单的选择,但它取决于在验证引擎代码之前运行的函数。 如果不是这种情况,那么它将不起作用。

这是一个很好的例子如何使用默认值验证可选字段?

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

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" />

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