Добавить опцию выбора и подтвердить ее

0

У меня есть трудная проблема, которую я не могу решить сам.

У меня есть динамический блок выбора с опцией, выбранной по умолчанию, например:

    <select id="product_configure_variants">
      <option value="8830685" selected="selected">nicotine</option>
      <option value="8831010">6mg nicotine</option>
      <option value="8831011">12mg nicotine</option>
     </select>

Я добавил с JQuery новый вариант поверх других, например:

$('#product_configure_variants').prepend('<option value="" disabled="disabled" selected="">Choose</option>');

Теперь html выглядит так:

    <select id="product_configure_variants">
      <option value="" selected="" disabled="disabled">Choose</option>
      <option value="8830685" selected="selected">nicotine</option>
      <option value="8831010">6mg nicotine</option>
      <option value="8831011">12mg nicotine</option>
     </select>

Я хочу заставить людей выбрать один из трех вариантов и сделать первый ("Выбрать") неизбираемым, но показан первым. Я думаю, что мне нужно проверить форму, но я не хочу использовать плагин.

Кто-нибудь знает, как это сделать?

  • 1
    Попробуйте if(!$('#product_configure_variants').val()){alert('select!!!')}
  • 2
    У ваших атрибутов id есть #, вы должны удалить их. <select id = "product_configure_variants">
Показать ещё 3 комментария
Теги:
select
validation

1 ответ

1

Вы могли бы сделать что-то вроде этого:

var option = $('<option>').text('- Chose one -');
$('#product_configure_variants').prepend(option).val('- Chose one -');

$('#my-form').submit(function(e){
    if ($('#product_configure_variants').val() == '- Chose one -') {
        e.preventDefault();
        alert('Warning! You have to select one!');
        $('#product_configure_variants').addClass('req');
    }
});

http://jsfiddle.net/9HGUp/

  • 0
    Хорошо, это очень помогло! Единственное, что сейчас не работает, это то, что поле выбора не изменяется на выбранную опцию и сохраняет выбранный вариант «Выбранный» ... Как это исправить в вашем коде? Я попробовал это с функцией изменения, но это не работает
  • 0
    Я интерпретировал ваш вопрос как то, что у вас есть система (framework / cms), что при заполнении нового элемента вы хотите, чтобы javascript запускался, и что при редактировании элемента вы не хотите, чтобы он запускался. Я прав? Если это так, то я бы порекомендовал поискать класс в DOM, который позволит вам определить, является ли элемент новым или нет. то есть: <body class = "create-new">. С этим классом у вас есть несколько вариантов. Вы можете обернуть код в простое логическое утверждение. if ($('body.create-new').length) { /* .. code here .. */ } или вы можете добавить body.create в начало ваших селекторов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню