jquery validate plugin需要确切的值

时间:2015-02-20 18:03:11

标签: javascript jquery jquery-validate

我们如何要求用户在文本输入中放置特定数字并根据确切数字(或任何值)进行验证。在这种情况下001(帐号的起始数字)。值001是一种确定用户是否可能有帐户继续进行的方法。

使用jQuery.validate - http://jqueryvalidation.org

拥有以下内容:

对于验证,我有:

$("#form1").validate({
messages: {
acn_01: {
     required: 'Please enter a valid account number',
     range: [001,001]
     }
}
});

范围似乎不适用于[001]或[001,001]。还有其他方法或技术吗?

谢谢大家。

2 个答案:

答案 0 :(得分:1)

您的代码......

messages: {  // <- MESSAGES option
    acn_01: {
        required: 'Please enter a valid account number',
        range: [001,001]  // <- this is not a message
    }
}

问题在于您尝试将放置规则参数放入messages选项中。 messages选项用于自定义消息,rules选项用于声明规则/参数。

$("#form1").validate({
    rules: {  // <- rules option
        acn_01: {
            required: true,   // <- rule: parameter
            range: [1, 1] // <- rule: parameter
        }
    },
    messages: { // <- messages option
        acn_01: {
            required: 'Please enter a valid account number', // <- custom message
            range: 'Please enter the number {0}'  // <- custom message
        }
    }
});

DEMO:http://jsfiddle.net/wxfaborn/

顺便说一句:你不能在001方法中使用字符串(range)或模式......它只能查找一系列数字,在这种情况下来自{{ 1}}最多1

修改

否则,您可以使用1方法(additional-methods.js文件的一部分)和regex作为参数。或者您可以使用the .addMethod() method编写自己的函数,从而创建自定义规则。

以下是pattern的简单演示。

.addMethod()

<强> http://jsfiddle.net/wxfaborn/1/

答案 1 :(得分:0)

为什么你要做的只是将用户输入与“001”进行比较时,你必须使用这个验证插件?只需创建自己的验证插件即可完成所需的操作。

$.fn.validate001 = function(){
  if(this.val()=="001")return true;
  else return false;
};
$("#input").validate001();

如果您需要“001”开头(但之后可能有数字),请使用:

$.fn.validate001 = function(){
  if(this.val().indexOf("001")==0)return true;
  else return false;
};
$("#input").validate001();

如果“001”需要在字符串的末尾使用:

$.fn.validate001 = function(){
  if(this.val().indexOf("001")==this.val().length-4)return true;
  else return false;
};
$("#input").validate001();

我认为不需要使用插件来实现这么简单的事情。