2013-09-25 3 views
0

Я хочу динамически изменять выбранный индекс выбранного элемента. Иногда опции от выбора могут привести к отключению параметров в других настройках. Я могу отключить параметры, которые просто прекрасны во время выполнения при изменении, но я не могу изменить параметр, отображаемый выбором.Динамически изменить отображаемый текст выбора

Например, если у меня есть этот выбор:

<select> 
    <option>Even or Odd?</option> 
    <option>Even</option> 
    <option>Odd</option> 
</select> 

<select> 
    <option value="">Pick a Number</option> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
    <option value="4">Four</option 
</select> 

Когда «Odd» выбрано, четные номера будут отключены, но если четное число уже выбран, когда первый выбор был изменен на " Нечетный ", тогда даже если выбранный индекс для второго выбора теперь равен 0, отображаемое значение все еще является исходным значением.

я в настоящее время пытался:

selects[i].selectedIndex = 0; 
selects[i].value = "Pick a Number"; 
$(selects[i]).val("Pick a Number"); 
$(selects[i]).attrs("selectedIndex", 0); 

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

+1

Название метода '' attr' не attrs'. – undefined

+0

Не только это, но и attr - неправильная функция для использования. Правильный ответ, согласно приведенному ниже ответу. –

+0

'selects [i] .selectedIndex = 0' должен работать. – Barmar

ответ

3

Попробуйте установить его с помощью prop и также нет встроенной функции с именем attrs, если вы ее не создали.

$(selects[i]).prop("selectedIndex", 0); 

И ваш val должен также работать, если у вас есть значение, определенное для выбора опции. (для первого, которого у вас нет), для второго просто используйте .val(""). Pick a Number - это не значение параметра (вместо этого оно равно «)) это отображаемый текст, но даже если некоторые браузеры позволяют указать, что в качестве значения (если значение не указано), я не думаю, что это работает в браузерах. Поэтому всегда устанавливайте атрибут value для ваших опций.

Кроме того, что вы делаете ЮО можете просто сделать:

selects[i].value = "Even or Odd?"; //for your first one 
selects[i].value = ""; //for your second one 
selects[i].value = "Pick a Number"; //Wont work for second one because you are overriding with an empty value attribute. 
+0

спасибо, как оказалось, наша самая последняя сборка использовала эффект замены на отдельные элементы для стилизации. Я не был осведомлен об этом, но я обязательно сделаю это так в будущем. Благодарю. – jokulmorder

+1

На самом деле, в спецификации HTML указано, что если в теге '' нет атрибута 'value', он по умолчанию использует текстовое содержимое. – Barmar

+0

@Barmar да, но я помню, что проблема возникла в старой версии IE, если я правильно помню. – PSL

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