2016-08-29 2 views
1

Я пытаюсь установить параметр выбора с помощью jquery, но он не работает должным образом. Он фактически устанавливает значение, но текст не обновляется.Невозможно изменить значение выбора JQuery

Я попытался с .prop('selected',true), .attr('selected',true), .prop('selected','selected'), .val() и .val().change() но nothig, кажется, работает

Вот выберите

<select class="input-field" id="equip_type" name="equip_type"> 
    <option value="" disabled selected>Tipo de Equipo </option> 
    <option value="0">equip_type_other</option> 
    <option value="1">equip_type_desktop</option> 
    <option value="2">equip_type_laptop</option> 
    <option value="3">equip_type_tablet</option> 
    <option value="4">equip_type_printer</option> 
</select> 

Я собираюсь установить опцию в пределах функции Ajax, поэтому значение исходило от функции. Это то, что я в настоящее время пытаюсь

$('#equip_type').val(data.equipType).change(); 

У меня есть использовать тот же метод с другими формами, но только этот один является причиной этого truble. Есть что-то, что мне не хватает?

+0

Я бы Рек порекомендуйте только то, что он отображает на веб-странице. –

+0

Вы можете показать нам свой метод 'change()'. Также убедитесь, что 'data.equipType' равен значению, которое у вас есть в html после его рендеринга. – bipen

+0

Я уверен, что data.equipType равен значению. Я использую console.log для отображения data.equipType и выбранного значения, вот как я знаю, что значение действительно меняется, но не текст –

ответ

0
$('#equip_type').val(data.equipType).trigger('change'); 
+0

Я пробовал, но все еще не работает –

0
$('#equip_type option[value="value"]'); 

В значении можно угождать значение параметра, и он будет работать.

+0

Этот метод получить, не задано –

3

Это достаточно:

$('#equip_type').val(data.equipType) 

Но, у вас есть:

<option value="${equipType.value}">${equipType.toString()}</option> 

и это проблема, параметр .val() должно быть значение поля опции, вместо вы используете текстовое значение.

Таким образом, вы можете фильтровать:

 $('#equip_type option').filter(function() { 
      return this.textContent == 'equip_type_tablet' 
     }).prop('selected', true); 

Мой фрагмент:

$(function() { 
 
    $('#equip_type option').filter(function() { 
 
    return this.textContent == 'equip_type_tablet' 
 
    }).prop('selected', true); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<select class="input-field" id="equip_type" name="equip_type"> 
 
    <option value="" disabled selected>Tipo de Equipo </option> 
 
    <option value="0">equip_type_other</option> 
 
    <option value="1">equip_type_desktop</option> 
 
    <option value="2">equip_type_laptop</option> 
 
    <option value="3">equip_type_tablet</option> 
 
    <option value="4">equip_type_printer</option> 
 
</select>

+0

nice catch ... +1 – bipen

+0

Получаю тот же результат.Он успешно изменит значение выбора. Но текст не обновляется. Я имею в виду. Значение меняется на «3», но текст говорит «Tipo de Equipo». Я действительно не знаю, что может быть неправильным –

+0

Да, я это делаю. Я использую console.log для отображения 'data.equipType', а затем для отображения' $ ('# equip_type'). Val() 'и он совпадает –

0
$('option:selected', '#my_select').val(); 

Первый селектор - ребенок, второй - родитель

+0

Благодарим вас за этот фрагмент кода, который может предоставить Некоторая ограниченная немедленная помощь. [Правильное объяснение] (https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) значительно улучшит его долгосрочную ценность, показывая, почему это хорошее решение проблемы и сделало бы ее более полезной для будущих читателей с другими подобными вопросами. Пожалуйста, [отредактируйте свой ответ] (https://stackoverflow.com/posts/47669687/edit), чтобы добавить некоторые объяснения в включая сделанные вами предположения. – Melebius

Смежные вопросы