Пользовательская проверка на плагине проверки jquery, необходимо посчитать элемент в множественном выборе - PullRequest
1 голос
/ 27 апреля 2010

У меня есть множественный выбор, и мне нужно заставить пользователя выбрать максимум две опции, не более того.

Я пытаюсь это:

jQuery.validator.addMethod("morethantwo", 
    function(value, element) {

        var foo = [];
        $(element+' :selected').each(function(i, selected){
            foo[i] = $(selected).text();
            alert(foo[i]);
        });
        return true;

    },"Max two options." 
);

Проблема в том, что я получаю:

uncaught exception: Syntax error, unrecognized expression: [object HTMLSelectElement]

ошибка. Хотя, если я сделаю это:

$(element).each(function(i, selected){
            foo[i] = $(selected).text();
            alert(foo[i]);
        });

Это работает, но я получаю все опции в select. Это почему? Это правильный путь, чтобы идти? Есть ли лучшие способы сделать этот вид проверки?

Большое спасибо!

1 Ответ

2 голосов
/ 28 апреля 2010

Чтобы ответить на вопрос, почему он ломается, element - это элемент DOM, а не строка, поэтому в этом коде вы пытаетесь сделать DOMElement+string ... что не работает :) Вместо этого оберните элемент DOM и используйте .find() или .children(), чтобы получить параметры.

Зная, почему оно сломалось, вы можете написать свое правило следующим образом:

jQuery.validator.addMethod("maxtwo", function(value, element) {
  return $(element).find(":selected").length <= 2;
},"Max two options.");

Проверьте здесь демонстрацию вышеуказанного кода

Если вы строго имеете дело с <select multiple>, вы также можете сделать это:

 return $(element).val().length <= 2;

Так как .val() возвращает массив в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...