Не удается добавить текст в скрытое поле ввода - PullRequest
0 голосов
/ 27 октября 2009

У меня есть следующий HTMl:

<input id="brandID" name="brandID" type="hidden" value="" />

<select id="selectList" class="textfield70pc" name="selectList">
    <option selected="" value="221">A</option>
    <option value="4673">B</option>
</select>

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

      jQuery('#selectList').change(function(){
        jQuery('#brandID').attr('value', '123123');
      });

Предложения кого-нибудь?

Обновление
Это работает, хотя:

document.getElementById('brandID').value = '123'

Но я бы хотел использовать jQuery.

Ответы [ 5 ]

5 голосов
/ 27 октября 2009

Изменение не поддерживается в jQuery live

Возможные значения события: щелчок, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, нажатие клавиши, keyup

В настоящее время не поддерживается: размытие, фокусировка, mouseenter, mouseleave, изменить, отправить

Если вы хотите использовать live, используйте live query


РЕДАКТИРОВАТЬ: Ваш код выше должен работать, как есть, так что, возможно, ваш список выбора отформатирован неправильно?

Этот базовый HTML заставил работать вышеупомянутую функцию:

<select id="selectList">
 <option>1</option>
 <option>2</option>
</select>

Хм, может быть, вы просто не видите, как он обновляет HTML, но он действительно обновляет DOM (вы используете firebug?) Я добавил предупреждение, чтобы показать значение, и оно показало правильное значение

$(document).ready(function(){
 jQuery('#selectList').change(function(){
  jQuery('#brandID').attr('value', '123123');
  alert($('#brandID').val());
 });
})
0 голосов
/ 27 октября 2009

После прочтения всех этих хороших ответов, которые не сработали для вас, я должен задать основной вопрос - запускаете ли вы этот Javascript в $(document).ready() или в теге <script> после элемента <select>? Это должно быть одно или другое, чтобы дерево DOM содержало элемент, прежде чем устанавливать его свойства.

0 голосов
/ 27 октября 2009

только на первый взгляд:

$(document).ready(function()
{
    $('#selectList').change(function() { $('#brandID').val('123123'); });
});

мои предположения: selectList где-то является действительным идентификатором.

ЕСЛИ это фактический список выбора (подразумеваемый только именем), вас волнует, что выбрано?

$(document).ready(function()
{
    $('#selectList').change(function() { 
        mychoice = $('#selectList option:selected').text();
        $('#brandID').val(mychoice); 
    });
});
0 голосов
/ 27 октября 2009

Это работает?

jQuery('#selectList').bind('change', function(){
  jQuery('#brandID').val('123123');
});

EDIT:

со страницы документации jquery Live () :

Добавлено в jQuery 1.3: привязывает обработчик к событию (например, нажатию) для всех текущих и будущих элементов. Можно также связать пользовательские события. Возможные значения события: щелчок, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, нажатие клавиши, keyup В настоящее время не поддерживается: размытие, фокусировка, указатель мыши, отпускание мыши, изменение, отправка

0 голосов
/ 27 октября 2009
jQuery('#selectList').live('change', function(){
  jQuery('#brandID').value = '123123';
});

И помните, что IE не будет запускать событие onchange, пока выбор не потеряет фокус.

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