2013-09-25 34 views
4

我正在使用jQuery驗證來驗證我的表單。問題是我有一個包含多個選擇框(動態數字)的表單,它有一個動態名稱 - >answers[$question['id']]jQuery驗證插件與多個選擇框

我見過一些腳本,當有一個固定名稱可以使用它來處理所有輸入字段像這樣。

$('#form').validate({ 
    rules: { 
     "answers[]" = "required" 
    } 
}); 

但在我的例子中,這是不可能的,任何想法?謝謝!

+1

想想正則表達式 –

+0

您有語法錯誤。它是'field:rule',而不是'field = rule'。 – Sparky

回答

14

首先,

它不是"answers[]" = "required"

"answers[]": "required"

通知到位的等號的冒號。

$('#form').validate({ 
    rules: { 
     "answers[]": "required" 
    } 
}); 

其次,只用name="answers[]"分配required規則的單個字段。

如果你想輕鬆地分配這個規則到多個領域與name="answers[1]"name="answers[2]"name="answers[3]",等等,那麼你就需要做兩件事情之一......

1)聲明required規則直列...

使用class

<input type="text" name="answers[1]" class="required" /> 
<input type="text" name="answers[2]" class="required" /> 
<input type="text" name="answers[3]" class="required" /> 

或與HTML5:

<input type="text" name="answers[1]" required="required"> 
<input type="text" name="answers[2]" required="required"> 
<input type="text" name="answers[3]" required="required"> 

和jQuery:

$('#form').validate(); // initialize the plugin 

DEMO#1http://jsfiddle.net/7JHWf/


2)或動態使用rules()方法與name所有字段開始answers分配規則:

$('#form').validate(); // initialize the plugin 

// assign the rules 
$('input[name^="answers"]').each(function() { 
    $(this).rules('add', { 
     required: true 
    }); 
}); 

DEMO#2http://jsfiddle.net/7JHWf/1/

+1

多好的答案。就是我在找的東西! – Limon

+1

很好的答案...2)爲我工作..完美 –

0

您可以通過抓取所有的選擇框或添加特定類給他們,然後通過使用每個()循環只需選擇你感興趣的選擇框:

$('select') or $('select.specificClass').each(function() {} 

你不需要知道每個盒子的名稱/ ID以便能夠選擇並循環。您可以使用每個()循環中引用當前項目的值:

$(this).val()