сравнивая переменные для валидации addMethod - PullRequest
0 голосов
/ 07 июля 2010

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

У меня есть текстовый ввод <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 ]

3 голосов
/ 07 июля 2010

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

if (sig.indexOf(firstname) >= 0) {
    return true;
} else return false;
3 голосов
/ 07 июля 2010

Вместо этого ($().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;
1 голос
/ 07 июля 2010

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