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

标签 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';" />

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

最佳答案

如果您希望使用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代码之前运行。如果不是这样,那就行不通。

关于javascript - 使用 jquery.validationEngine.js 处理默认表单值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080047/

相关文章:

javascript - 如何在 Angular 2 中展平嵌套的 Observables

javascript - 使用 array.push(val) 在 angularjs 中推送数组中的值是否会创建深度复制?

javascript - 当鼠标移开两个 div 时隐藏一个 div,但如果您将鼠标悬停在其中一个或另一个则不会隐藏

jquery - 使用 jQuery 定位特定的 href

jquery - 相当于 offsetHeight 的 jQuery 是什么?

javascript - Jquery 验证所有错误仅显示在一个警报框中

ruby-on-rails-3 - Rails 3 - 将参数传递给自定义验证方法

validation - 使用 tcomb-form-native 验证字符串相等性(确认密码)

javascript - 为什么带有 SVG 的 CSS 剪辑路径在 Safari 中不起作用?

javascript - 如何: Dynamically move Google Gauge?