2013-11-28 5 views
1

У меня есть правило, которое выглядит как ответ в this thread, но не проверяется правильно. Если я прокомментирую это правило, проверка правильности выполняется в остальной части формы. Другие синтаксические ошибки, которые я нашел, вызвали тот же результат, поэтому я ожидаю, что здесь есть синтаксическая ошибка, но затуманивается, если я могу это обнаружить.jquery validate зависит от правила

Правило

freq: { 
    required: { 
     depends: {function(element){ 
      return $('#freqBand').val().length > 0 && 
      $('#freqBand').val() != "24GHz"); 
      } 
     } 
    } 
}, 

Я ожидаю, что если значение входного поля freqBand (отборное вход) ничего, кроме «24GHz» или ничего, то требуется поле частоты.

Я просто изучаю jquery, так что это может быть настоящий лоб-slapper.

EDIT 11/28

Я сделал еще несколько неисправностей и обнаружили, что $ ('# freqBand'). Вал() не определено.

он находится в HTML, как

<select name="freqBand" tabindex="6"> 
     <option value="" label="&ndash;Choose&ndash;" >&ndash;Choose&ndash;</option> 
     <option value="27MHz" label="27 MHz" >27 MHz</option> 
     <option value="50MHz" label="50 MHz" >50 MHz</option> 
     <option value="75MHz" label="75 MHz" >75 MHz</option> 
     <option value="24GHz" label="2.4 GHz" >2.4 GHz</option> 
</select> 

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

$("select.freqBand option:selected").val() 

но также разрешает к неопределенным. Помогает ли эта дополнительная информация кому-то помочь мне?

+0

у вас есть вопросы синтаксиса есть попробовать 'частота: { требуется: { зависит:.. Функция (элемент) { возвращение $ ('# freqBand') Вал() длина> 0 && $ ('# freqBand') .val()! = "24 ГГц"); } } ' –

ответ

0

Отсутствует colon после зависит. Дополнительная braces после зависит это unecessary.Try это:

freq: { 
required: { 
    depends: function(element){ //Missing colon here and no opening braces required 
     return ($('#freqBand').val().length > 0 && 
     $('#freqBand').val() != "24GHz")); 
     } 
    } 
}, 
+0

Вставить двоеточие, но он не изменил результат. –

+0

Удалили ли вы дополнительные открывающиеся брекеты после того, как они зависели и соответствующие закрывающие скобки ??? –

+0

Я сделал это сейчас, но никаких изменений. –

1

Я знаю, что это старый пост, но я в настоящее время работаю в подобную проблему. Тем не менее, я обеспокоен использованием селектора id # для атрибута имени. Из того, что я нашел, селектор идентификатор никоим образом не будет использоваться для имени атрибута, а имя атрибута должно быть имя с помощью селектора [name='name']

См: Name vs Id attribute in HTML

Это, вероятно, не в полной мере решить вашу проблему, но это определенно было бы чем-то, о чем нужно знать сейчас, а не позже. Опять же, я знаю, что прошло уже год. Кроме того, если я прав в отношении выбора идентификатора для атрибутов имени, тогда была решена огромная проблема с вашим кодом.

Кроме этого, все данные Joke_Sense по-прежнему актуальны и актуальны.

О, и я новичок в StackOverflow (хотя я еще не сделал учетную запись, я не думаю). Если кто-нибудь может дать мне отзыв о том, был ли этот ответ ... ну, он должен был быть просто в стороне. Я просто прошу конструктивную критику. У меня есть знания и ноу-хау, я просто не хочу дурачить себя.

+0

Привет, друг. Сначала ... WOW выделено курсивом сообщение от нового пользователя. Единственная проблема, которую я вижу с вашим ответом, состоит в том, что это комментарий больше, чем ответ. Я знаю, что вы еще не можете комментировать, и иногда это может быть проблемой, но такой ответ не является ответом, особенно с текущим ответом от Joke_Sense. Но отличная работа, чтобы оставаться открытой для критики :). – Patrice

0

Это старая нить, и, вероятно, она была решена, но я решил бы, что я отдам ее.

Самая яркая проблема, которую я вижу, заключается в том, что ваш вход для ввода не имеет идентификатора, назначенного ему, но вы вызываете его в свой идентификатор: $('#freqBand').val(). Вам нужно добавить идентификатор к элементу, чтобы ссылаться на этот элемент таким образом.

Также обратите внимание, что в вашем утверждении также отсутствует скобка. У вас есть конец один после «24 ГГц», но у вас нет начального, что также может вызвать проблему.

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

Во всяком случае, все три из этих работ (проверено с помощью версии 1.13.1):

freq: { 
    required: { 
     depends: function(element){ 
      return ($("#freqBand").val() != "" && $("#freqBand").val() != "24GHz") 
     } 
    } 
} 

freq: { 
    required: { 
     depends: function(element){ 
      return ($("select[name=freqBand]").val() != "" && $("select[name=freqBand]").val() != "24GHz") 
     } 
    } 
} 

freq: { 
    required: { 
     depends: function(element){ 
      return (($("select[name=freqBand]").val().length > 0) && $("select[name=freqBand]").val() != "24GHz") 
     } 
    } 
} 

Надеются, что это помогает.

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