2013-11-28 153 views
1

我有一條規則,似乎被格式化爲this thread的答案,但沒有正確驗證。如果我評論這條規則,驗證在表單的其餘部分正確執行。我發現的其他語法錯誤導致了相同的結果,所以我期望這裏有一個語法錯誤,但是如果我能發現它,則會失敗。jquery驗證依賴規則

規則是

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

我期待的是,如果輸入字段freqBand(選擇輸入)值大於「24GHz」或沒有任何其他,則需要在頻率域。

我只是在學習jquery,所以它可能是一個真正的額頭瓣。

編輯11/28

我做了一些更多的故障診斷和發現,$( '#freqBand')。VAL()是不確定的。

它在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')VAL()長度> 0 && $( '#freqBand') .val()!=「24GHz」); } }' –

回答

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選擇器#用於名稱屬性。從我發現,ID選擇不以任何方式用於name屬性,而name屬性應該通過選擇來解決[name='name']

參見:Name vs Id attribute in HTML

這可能並不充分解決你的問題,但肯定是現在要注意的事情,而不是晚些時候。再次,我知道這是一年。另外,如果我對名稱屬性的id選擇器是正確的,那麼代碼中的一個大問題已經解決。

除此之外,所有Joke_Sense的信息仍然是真實的和相關的。

哦,我是新來的StackOverflow(雖然我還沒有創建一個帳戶,我不認爲)。如果任何人都可以就我的迴應是否......給我提供反饋,那麼它本意只是放在一邊。我只是要求建設性的批評。我掌握了知識和技能,我只是不想讓自己變傻。

+0

嘿阿爾喬。首先...哇,斜體消息令人驚訝的是來自新用戶。我在答案中看到的唯一問題是它不僅僅是一個答案而是一個評論。我知道你現在還不能發表評論,有時候這可能會有點麻煩,但這種答案並不是答案,尤其是對於Joke_Sense的當前答案。但很好的工作,保持公開批評:)。 – Patrice

0

這是一個古老的線程,可能已經解決了,但我想我會放棄它。

我看到的最明顯的問題是,您的選擇輸入沒有分配給它的ID,但是您正在調用您的depends語句中的ID:$('#freqBand').val()。您需要在選擇中添加一個ID,以便以這種方式引用元素。

另請注意,您的驗證聲明也缺少括號。你在「24GHz」之後有一個結尾,但你沒有開始,這也可能導致問題。

此外,不知道爲什麼你使用長度。我想你可能想要確定它的價值,因此我可能會稍微修改依賴性語句。

反正,所有這三個工作(使用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") 
     } 
    } 
} 

希望這有助於。