2017-10-05 76 views
0

我有我的代碼多個複選框正確的jQuery選擇與數組名html元素

<label> 
<input name="meta[Radio & Speakers]" class="flat" type="checkbox" value="YES"> Radio & Speakers 
</label> 

每當複選框被選中,一個隱藏的輸入是未選中的複選框前放與使用相同的名稱:

$('input').on('ifUnchecked', function(event){ 
    name = $(this).attr('name'); 

    if($('input[type="checkbox"][name="'+name+']"').length == 0){ 
     $(this).before('<input type="hidden" name="'+name+'" value="NO"/>'); 
    } 

}); 

我謹如果它存在使用$('input[type="checkbox"][name="'+name+']"').length但似乎無法檢查,以避免隱藏的輸入多次插入,有我丟失的東西在這裏...

手動添加隱藏的複選框對我而言是不可行的,因爲它們太多了。

+0

什麼是'ifUnchecked'事件? – dfsq

+0

'$(「name ='meta \ [Radio \&Speakers \''')' –

+1

@dfsq https://github.com/fronteed/icheck plugin – Satpal

回答

0

你必須這樣做象下面這樣: - 。

1.使用click事件(如果使用插件,然後用你的初始事件ifUnchecked去)

2.檢查該複選框被選中或取消選中。

3.如果未勾選複選框,則檢查已隱藏的輸入是否存在。如果不是,則只添加隱藏的輸入。

檢查下面的代碼片段。

$(document).ready(function(){ 
 
    $('input').on('click', function(event){ //or use $('input').on('ifUnchecked', function(event){ 
 
    name = $(this).attr('name'); 
 
    if(!$(this).is(":checked")){ 
 
    if($(this).parent('label').find('input[type="hidden"]').length ==0){ 
 
     $(this).before('<input type="hidden" name="'+name+'" value="NO"/>'); 
 
    } 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label><input name="meta[Radio & Speakers]" class="flat" type="checkbox" value="YES"> Radio & Speakers</label>

+0

完美! ($(this).parent('div')。find('input [type =「hidden」]')。length == 0){ $(this).before('');' } –