2017-10-05 41 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('');' } –