jquery.validation - 验证必填字段时如何忽略默认值

发布于 2024-08-31 04:30:20 字数 436 浏览 3 评论 0原文

我正在使用 jquery 验证插件来验证注册表单。

每个文本输入字段都有预先填充为输入框中的值的说明

,例如:对于文本输入框 id='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" />

我需要知道的是如何在验证规则中指定,以便如果输入框包含默认消息或空值,插件会抛出必填字段错误。

非常感谢帮助。

I am using jquery validation plugin to validate a registration form.

Each text input field has instructions pre-filled as values in the input box

ex: for a text-input box id='Name', the default value will be set to 'Enter Your Name'. I have pasted below sample code:

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

What I need to know is how to specify in the validation rule such that the plugin throws a required field error if the input box contains either the default message or empty values.

Help much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

梦罢 2024-09-07 04:30:20

我认为这样更好:

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

I think this is better:

jQuery.validator.addMethod("defaultInvalid", function(value, element) 
{
    return !(element.value == element.defaultValue);
});
递刀给你 2024-09-07 04:30:20

我通过使用 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"
      }
    })
   }

我对表单中具有默认值的所有元素都使用了相同的代码。这很好用。

I figured a way around the problem by creating a custom validation using validator.addMethod, which is really easy.

I have pasted a snippet of my validation block below:

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

I have used the same for all the elements which have default values in the form. This works great.

东京女 2024-09-07 04:30:20

对我来说,上述内容仅适用于以下更改:

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;
    }
});

for me the above only worked with the following changes:

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;
    }
});
陌路终见情 2024-09-07 04:30:20

如果你想添加自定义错误消息,只需使用它即可。

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
    return !(element.value == element.defaultValue);
}, 'Custom Error Message for this field');

If you want to add a custom error message to it jus tuse this.

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
    return !(element.value == element.defaultValue);
}, 'Custom Error Message for this field');
半葬歌 2024-09-07 04:30:20

只需在规则部分

onfocusout: function(element) { $(element).valid(); 之后添加此内容即可}

一切都会好起来的。

just add this after rule section

onfocusout: function(element) { $(element).valid(); }

and it will be all right.

弱骨蛰伏 2024-09-07 04:30:20

我认为您需要添加“默认”情况才能正常工作:

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
        switch (element.value) {
          case "$defaultText":
              if (element.name == "$defaultText")
                  return false;
              break;
          default:
            return true;
            break;
        }
});

I think you need to add the "default" case to get this working properly:

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
        switch (element.value) {
          case "$defaultText":
              if (element.name == "$defaultText")
                  return false;
              break;
          default:
            return true;
            break;
        }
});
星星的轨迹 2024-09-07 04:30:20
$.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.可选(元素)”,因为在某些情况下我收到错误消息“依赖项不匹配”。

$.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')
            }
        }

Such function takes into consideration cases of "mandatory" & "optional" fields.

Expression "!req" purposely replaces "this.optional(element)" because I get error message "dependency mismatch" in some cases.

五里雾 2024-09-07 04:30:20

我对 jquery.validationEngine 做了一些补丁,以允许忽略某些复杂表单的某些输入字段。我进行了以下更改:

  • 添加对 jquery.dropkick 选择皮肤验证位置的支持
  • 添加对 ve_invalid 值条目无效的选择字段(以便能够在没有有效选择的情况下显示指令)
  • 添加 hideAllInstant 以立即删除验证
  • 添加对 jquery 的支持.simpleImageCheck 元素如果原始输入被隐藏,则使用 simpleImageCheck 的位置来代替
  • 添加skipValidate 类以避免对某些字段进行验证而不禁用它们
  • 修复与prompt_err 未定义不匹配时的错误,目标生成错误
  • 添加clearField 支持以避免验证jquery.clearField。 Node.js
  • 添加 validateHiddenFields,对隐藏和非隐藏字段进行验证

在您的情况下,您可以使用skipValidate 类的修改来执行此操作。
您可以在此处找到修补后的脚本以及英语过滤器(也可以使用 fr ):

jquery.validationEngine.js 已修补

jquery.validationEngine-en。 js 已修补

我应该将这些更改提交到 git hub,但现在没有时间这样做。

杰罗姆·戈德布特

Panthera 牙科

I made some patch to jquery.validationEngine to allow ignoring some input field for some complexe form. I made the following changes:

  • Add support for jquery.dropkick select skining validation position
  • Add select field invalid for ve_invalid value entry (to be able to display directive without it being a valid selection)
  • Add hideAllInstant to remove validation with no delay
  • Add support for jquery.simpleImageCheck element if original input is hidden, use location of simpleImageCheck instead
  • Add skipValidate class to avoid validation on some fields without disabling them
  • Fix error when no match with prompt_err undefined, destination was generating an error
  • add clearField support to avoid validating jquery.clearField.js
  • add validateHiddenFields, validation on hidden and non-hidden field

In your case you can use the modification for the skipValidate class to perform this.
You can find the patched script here along with the english filter (fr one is also available):

jquery.validationEngine.js Patched

jquery.validationEngine-en.js Patched

I should submit those change into git hub, but did not got time to do so right now.

Jerome Godbout

Panthera Dental

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文