jquery — невозможно получить доступ к отдельным элементам, которые являются частью списка / поля выбора в форме веб-страницы

#javascript #jquery

#javascript #jquery

Вопрос:

Я пытаюсь получить доступ к каждому отдельному элементу, т.Е. опции, определенной для окна списка (или выпадающего списка).

По какой-то причине код, который я использую, не работает. Это приведено ниже—

 $(jQuery('input', $(this).parent('form'))).each(function() {
        element= $(this);

            textmsg=" Element # "   (count 1)   "...Name of this input element = "   $(this).attr('name')   " multiplechoice-"    $(this).attr('multiple');
            textmsg= textmsg   "...Also, for this element, the value is "   $(this).val()   " and type ="    $(this).attr('type');
            alert (textmsg);
         var listofoptions = new Array();
         type=$(this).attr('type');
         if(type=="select")//this means we have to go through the children for this select element, to obtain the values for each option
         {
             var elements= $('option', this);
             for(var i=0; i<elements.length; i  )
            {
                // add $(this).val() to your list

                alert("Value of this option="   $elements[i].val()); 
            });

         }
});
  

Как мне заставить приведенный выше код работать? Или вы можете предложить альтернативный способ доступа к каждому значению параметра? Спасибо…

Ответ №1:

Чтобы выбрать все входные данные, вам нужно будет использовать :input селектор, а не только $('input') , поскольку при этом будут выбраны входные данные по имени тега, и выбор будет исключен.

Так что

 $(this).parent('form').find(':input')
  

Кроме того, поскольку у type элемента нет select атрибута. Вместо этого вы могли бы использовать .is(), чтобы проверить, является ли это выбором.

 $(this).is('select') 
  

Редактировать: для оператора if я бы сделал следующее

 if( $(this).is('select') )
{
    $(this).find('option').each(function(){ 
       alert( $(this).val() );    
    });            
}
  

Вот скрипка

Комментарии:

1. @Intersellar_Coder — Я изменил первоначальный вызов jquery в соответствии с вашим комментарием, я также изменил условие ‘if’ в соответствии с вашим ответом — теперь условие if равно — if ($(this).is(‘select’)) — однако я все еще не могу получить какое-либо значение параметра… Связано ли это с ошибкой в следующем— —var elements= $(‘option’, this);— или это что-то еще… Спасибо…

Ответ №2:

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

Вы могли бы попробовать

 $("input, select")