2010-07-06 5 views
0

Ive боролся с этим весь день, был близок пару раз, но ничего не работает точно.сравнение переменных для проверки addMethod

У меня есть ввод текста <input type="text" name="USA_sub" id="USA_sub" /> и после этого вход <input type="text" name="FirstName" id="FirstName" /> мне нужно, чтобы убедиться, что (создать правило проверки), который гласит «#FirstName» «s значение должно содержаться в„#USA_sub“» s значение.

я получаю сообщение об ошибке "$ (сиг) .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."); 

ТНХ Кейн

ответ

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; 
+0

+1 Хороший способ устранить ненужное 'if()'. – user113716

1

contains метод JQuery может быть применен только к элементам DOM. Вместо этого вы можете использовать javascript-метод indexOf. Он будет искать вхождения заданного значения в строке

$.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."); 
3

Попробуйте это:

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

И это было проголосовано, почему? – user113716

+0

Почему это было приостановлено? Правильно, он имеет '> = 0', а не только'> 0'. +1 –