Jquery - значение из выпадающего списка для выбора предыдущего элемента поля ввода - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь присвоить значение из раскрывающегося списка input (выбрать) простой text input.

У меня есть простая разметка, например:

<p>
    <input class="large-text o99-input-from-dropdown" id="o99_coks_settings[coks_banner_link_href]"  name="o99_coks_settings[coks_banner_link_href]" type="text" value="some-php-generated-value"/>
    <label class="description" for="o99_coks_settings[coks_banner_link_href]">
    </label>
</p>
<p>
    <label for="o99_coks_settings[coks_page_href]"></label>
    <select name="o99_coks_settings[coks_page_href]" id="o99_coks_settings[coks_page_href]" class="o99-dropdown-2-input">
    <option value='false'>None</option>
    <option value='some-php-generated-values'>Some other PHP generated values </option>
    ....  
    ....  n
    </select>
</p>

ДаЯ знаю, что идентификаторы типа id [array] не являются действительными на 100%, но, к сожалению, это требование стороннего производителя.

Ниже приведен мой jQuery, который (должен быть) на самом деле очень простой однострочный- но не работает (с некоторыми испытаниями, которые все предлагают "undefined")

 jQuery('.o99-dropdown-2-input').change(function() {
  var val = jQuery(this).val(); 
 // OR
 //  var val = this.value;

  var val2 =  jQuery(this).prevAll('input[type=text]:first').val();
  var val3 =  jQuery(this).prevAll('input').val();
  var v = jQuery(this).prev(".o99-input-from-dropdown").find("input").val()

  console.log('Previous input id ' + val3.attr("id")); // all undefined

  jQuery(this).prevAll('input[type=text]:first').val = "testVal1";// all undefined
  jQuery(this).prevAll('.o99-input-from-dropdown').val = "testVal2";// all undefined
  jQuery(this).prevAll('.o99-input-from-dropdown').find('input[type=text]:first').val = "testVal3";// all undefined
  jQuery(this).parent().prev().find('input[type=text]:first').val = "testVal4";// all undefined
  jQuery(this).prev('.o99-input-from-dropdown').find('input').val = "testVal5";// all undefined


  console.log(v);

})

Все вышеперечисленные испытания (и некоторые другие комбинации) возвращаются undefined -Что я здесь пропускаю?

1 Ответ

0 голосов
/ 26 ноября 2018

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

  console.log('Previous input id ' + $(val3).attr("id")); 

  jQuery(this).prevAll('input[type=text]:first').val("testVal1");
  jQuery(this).prevAll('.o99-input-from-dropdown').val("testVal2");
  jQuery(this).prevAll('.o99-input-from-dropdown').find('input[type=text]:first').val("testVal3");
  jQuery(this).parent().prev().find('input[type=text]:first').val("testVal4") ;jQuery(this).prev('.o99-input-from-dropdown').find('input').val("testVal5");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...