比较验证addMethod的变量

时间:2010-07-06 20:55:42

标签: javascript jquery string validation contains

我整天都在苦苦挣扎,已经接近几次,但似乎没有任何工作。

我有一个文本输入<input type="text" name="USA_sub" id="USA_sub" />,之后输入<input type="text" name="FirstName" id="FirstName" />我需要确保(创建一个验证规则),声明“#FirstName”的值必须包含在“#USA_sub”中“的价值。

我不断收到错误“$(sig).contains不是函数”,用这个:

$.validator.addMethod("FNESig", function (value, element) {
    var firstname = $("#FirstName").val();
    var sig = $("#USA_sub").val();

    if ($(sig).contains(firstname)) {
        return true;
    } else return false;
}, "Your First Name must be in your Electronic Signature.");

THX 凯恩

3 个答案:

答案 0 :(得分:3)

试试这个:

if (sig.indexOf(firstname) >= 0) {
    return true;
} else return false;

答案 1 :(得分:3)

而不是这个($().contains()不是一个方法......你有一个字符串,而不是一个jQuery对象的选择器,不需要包装任何东西):

if ($(sig).contains(firstname)) {
    return true;
    } else return false;

您可以使用string.indexOf(),如下所示:

return sig.indexOf(firstname) != -1; //-1 would mean it wasn't found

作为旁注,由于您返回与条件相同的结果,只需将其返回,换句话说:

if(someCondition) {
  return true;
} else {
  return false;
}

可以是:

return someCondition;

答案 2 :(得分:1)

jQuery中的

contains方法只能应用于DOM元素。您可能希望使用indexOf javascript方法。它将在字符串

中搜索指定值的出现
$.validator.addMethod("FNESig", function (value, element) {
    var firstname = $("#FirstName").val();
    var sig = $("#USA_sub").val();

    // means: does sig contains firstname?
    return (sig.indexOf(firstname) !== -1);

}, "Your First Name must be in your Electronic Signature.");