2016-09-30 115 views
0

我有一个复选框,需要保持检查,一旦用户点击输入框。Jquery复选框仍然检查点击

期:在第一次点击复选框被选中,这工作正常。当再次点击输入时,复选框变为未选中状态。

输出需要:

我想要的复选框保持选中状态,因为这会触发change事件。

我搜索了很多例子来找到这个解决方案,但是找不到它。

任何帮助表示赞赏。

请参见小提琴:

http://jsfiddle.net/nrYec/194/

JS:

$('input').click(function() { 
    $('#x').text(this.checked ? "is checked" : "is not checked"); 
}); 
$('.b2').click(function() { 
     $('.trigger').click(); 
}); 
+0

你是说,点击进入任何一个文本框中应该设置复选框,如果它检查还没有,但点击复选框本身应该允许取消选中? – nnnnnn

+0

所以当你点击文本框时,你为什么要切换复选框状态?这里应该发生什么。 – epascarello

+0

@nnnnnn这是正确的单击文本框应该只在一个方向工作,保持复选框选中。除非它被用户手动取消选中。 – Seansa

回答

2

试试这个:

$('.b2').click(function() { 
 
    if (!$('.trigger').prop('checked')) { 
 
     $('.trigger').prop('checked', 'true'); 
 
    }; 
 
}); 
 

 
$('input').click(function() { 
 
    $('#x').text($('.trigger').prop('checked') ? "is checked" : "is not checked"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input class='trigger' type='checkbox'> 
 
<input class='b2' type='text' name='something'> 
 
<input class='b2' type='text' name='something'> 
 
<div id='x'></div>

+0

感谢这工作。 – Seansa

0
$('input').click(function() { 
    if ($(this).attr('type') !== "checkbox") 
    $('input[type="checkbox"]').prop('checked', true) 
}); 

这将迫使点击任何其他输入时,要检查的复选框,但仍能正常运行时它被点击。

+0

做到这一点,但是这会阻止你取消选中复选框。 – epascarello

1

一种选择是将其包装在if声明:

JS Fiddle

$('.b2').click(function() { 
    var trigger = $('.trigger'); 
    if (!$('.trigger').is(':checked')) { 
    trigger.click(); 
    } 
}); 

$('input').click(function() { 
    // And need to check if the checkbox (not any input) is checked here 
    $('#x').text($('.trigger').is(':checked') ? "is checked" : "is not checked"); 
}); 
3

您在您要点击到文本框中选中该复选框的意见明确,但点击次数复选框本身正常工作。所以不会触发点击事件,只是直接设置复选框的checked属性:

$('.b2').click(function() { 
 
    $('.trigger').prop("checked", true); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input class='trigger' type='checkbox'> 
 
<input class='b2' type='text' name='something'> 
 
<input class='b2' type='text' name='something'> 
 
<div id='x'></div>

0

以最好的方式保持你的复选框检查是在你的ch上添加一个处理器onchange监听器eckbox,只是设置javascript属性检查=真

$('.trigger').on('change', function() { 
$('.trigger')[0].checked = true; 
}) 
0

参考文献:prop

$('.b2').on('click',function() { 
 
    $('.trigger').prop("checked", true); 
 
}).on('blur',function(){ 
 
    if($(this).val().trim().length === 0){ 
 
    $('.trigger').prop("checked", false); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class='trigger' type='checkbox'> 
 
<input class='b2' type='text' name='something'> 
 
<input class='b2' type='text' name='something'> 
 
<div id='x'></div>