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

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

Я пробую это:

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

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

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

ошибка. В то время как, если я делаю это:

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

Это работает, но я получаю все опции в выборе. Почему это? Действительно ли это - корректная дорога к обходу? Там лучшие пути состоят в том, чтобы сделать этот вид проверки?

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

1
задан 0plus1 27 April 2010 в 13:17
поделиться

1 ответ

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

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

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

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

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

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

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

2
ответ дан 3 September 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: