2017-06-06 71 views
1

我想驗證至少有一個複選框被選中。複選框被動態地添加,所以確切的ID是未知的。我所知道的是,他們以相同的ID名稱開頭,例如「Sameid_xxx」, 「Sameid_xx1」 , 「Sameid_xx2」 等。jquery驗證至少檢查一個複選框與動態編號

這裏是我有:

$cbx_group = $('input[Id^="Sameid"]'); 

$cbx_group.prop('required', true); 
if ($cbx_group.is(":checked")) { 
    $cbx_group.prop('required', false); 
} 

這裏的問題是,這使得所需的所有複選框。我也不要有形式驗證

+0

它們分配相同的類,然後你有一個'在它each'循環。 –

回答

1

使用$cbx_group.is(":checked")象下面這樣: -

下面的代碼會做兩件事情: -

1.如果選中任何一個複選框,則從所有複選框中刪除required

2.將required再次添加到所有複選框未選中的情況下。

代碼: -

$cbx_group = $('input[Id^="Sameid"]'); 
 
$cbx_group.prop('required', true); 
 
$cbx_group.on('click',function(){ 
 
    if($cbx_group.is(":checked")) { 
 
    $cbx_group.prop('required', false); 
 
    }else{ 
 
    $cbx_group.prop('required', true); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" id="Sameid_XXX">1<br> 
 
<input type="checkbox" id="Sameid_XX1">2<br> 
 
<input type="checkbox" id="Sameid_XX2">3<br> 
 
<input type="checkbox" id="Sameid_XX3">4<br>

參考採取: - https://stackoverflow.com/a/39849541/4248328

+0

工作。謝謝 – Kimos

+0

@Kimos很樂意幫助你。乾杯:) :) :) –

0

您可以檢查複選框的數量使用託運長度

if($cbx_group.is(":checked").length > 0)) 
{ 
    $cbx_group.prop('required', false); 
} 
0

您可以試試這個:

使用attribute contains selector。 鏈接:http://api.jquery.com/attribute-contains-selector/

function test() { 
 
$cbx_group = $('input[Id*="Sameid"]'); 
 

 
$cbx_group.prop('required', true); 
 
if ($cbx_group.is(":checked")) { 
 
    $cbx_group.prop('required', false); 
 
    console.log('checked'); 
 
} else { 
 
console.log('not checked'); 
 
} 
 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" id="Sameid1"> 
 
<input type="checkbox" id="Sameid2"> 
 

 
<button id="one" onclick="test()">Click</button>

相關問題