jQuery Validate select>option равный 0

Тема в разделе "JavaScript", создана пользователем Genk0, 5 мар 2014.

Статус темы:
Закрыта.
Модераторы: ZiX
  1. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.627
    Симпатии:
    1.330
    Есть select у которого первый option value=0, соответственно если выбрано 0 то поле не должно проходить валидацию и должно высветить ошибку.
    Вся суть в том, что я не могу обратиться к селекту по его имени из-за большого количества таковых.

    Т.е. поставив Required к селекту валидация срабатывает если оption будет пустой, но в моем случае это 0.

    Иными словами, как переписать стандартную проверку на select с option = 0 , а не пустым, не используя имена select?
     
  2. denik

    denik Постоялец

    Регистр.:
    1 июл 2011
    Сообщения:
    79
    Симпатии:
    43
    Покажите ваш код валидации. и каким именно вы плагином пользуетесь?
    Попробуйте проверять в ручную $("select").val();
     
  3. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.627
    Симпатии:
    1.330
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
    Код:
    $(document).ready(function(){
        $("#item-form").validate({
          errorClass: "inp-error",
           rules:{
                title:{required: true,},
           },
           messages:{
                title:{required: "Это поле обязательно для заполнения",},
           }
        });
    });
    
    Ну и кусок формы
    HTML:
    <select class="req" required name="d[49][8]">
    <option value="0" selected="selected">Выберите марку авто</option>
    <option value="1">Acura</option>
    </select>
    required соответственно говорит что нужно пройти валдацию, но первый option стоит 0, поменять его не могу, поэтому и нужно сделать проверку на 0 а не пустой value
     
  4. dwarf

    dwarf Постоялец

    Регистр.:
    12 июн 2011
    Сообщения:
    88
    Симпатии:
    18
    На вскидку вариант - если меньше нуля значения быть не могут, установить минимально возможное:
    HTML:
    $(document).ready(function(){
        $("#item-form").validate({
          errorClass: "inp-error",
           rules:{
                title: {
                    required: true,
                    min:1
                },
           },
           messages:{
                title:{required: "Это поле обязательно для заполнения",},
           }
        });
    });
     
    denik нравится это.
  5. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.627
    Симпатии:
    1.330
    title: {
    required: true,
    min:1

    ЕЩЕ раз повторяю - я не могу обратиться к селекту по имени!
     
  6. antiterror

    antiterror xProgramming

    Регистр.:
    22 авг 2007
    Сообщения:
    343
    Симпатии:
    135
    пробовал
    if( parseInt( select:value ) == '0' ) ?
     
    Genk0 нравится это.
  7. dwarf

    dwarf Постоялец

    Регистр.:
    12 июн 2011
    Сообщения:
    88
    Симпатии:
    18
    А на всех селектах формы не висит случаем один и тот же класс? Если висит, есть идея.

    Еще пришел на ум такой костыльный вариант:
    Код:
    $(document).ready(function(){
        $("#item-form select >  option:eq(0)").each(function(){
            if($(this).val() == 0) {
                $(this).val('');
            }
        });
    
        $("#item-form").validate({
          errorClass: "inp-error",
           rules:{
                title: {
                    required: true
                },
           },
           messages:{
                title:{required: "Это поле обязательно для заполнения",},
           }
        });
    });
     
    Genk0 нравится это.
Статус темы:
Закрыта.