【发布时间】:2017-07-07 13:31:35
【问题描述】:
我有几个复选框需要在获得焦点时使用回车键而不是空格键进行选择。我有下面的代码适用于一个复选框,但我需要多个复选框。我知道 id 标签需要是唯一的,但我不知道该怎么做。
$(document).ready(function () {
$('#mycheckbox').on('keypress', function (event) {
if (event.which === 13) {
this.checked = !this.checked;
}
});
});
<input type="checkbox" name="Colors" value="Bike" id="mycheckbox">My text<br>
我正试图让它在所有复选框上工作,而不仅仅是具有 mycheckbox id 的复选框。
到目前为止,这是我的完整代码:
`
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-
latest.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('input:checkbox').on('keypress', function (event) {
if (event.which === 13) {
$(this).prop('checked', !$(this).prop('checked'));
}
});
});
</script>
</head>
<body>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></
script>
<textarea class="textfield" id="form1" name="form1">My text
here</textarea>
<div class="taglist">
<label><input type="checkbox" value="Value 1">Value 1</label>
<label><input type="checkbox" value="Value 2">Value 2</label>
<label><input type="checkbox" value="Value 3">Value 3</label>
<label><input type="checkbox" value="Value 4">Value 4</label>
<label><input type="checkbox" value="Value 5">Value 5</label>
</div>
<script type="text/javascript">
function updateTextArea() {
var allVals = $('#form1').data('initialVal'),
lineCount = 1;
$('.taglist :checked').each(function(i) {
allVals+= (i != 0 || allVals.length > 0 ? "\r\n" : "") + $(this).val
();
lineCount++;
});
$('#form1').val(allVals).attr('rows', lineCount);
}
$(function() {
$('.taglist input').click(updateTextArea);
$('#form1').data('initialVal', $('#form1').val());
updateTextArea();
});
</script>
</body>
</html>
`
【问题讨论】:
-
请发布您正在使用的 HTML。
-
@Greg - 单击复选框时,您正在更新文本区域。最好使用
change事件,例如$('.taglist input').change(updateTextArea);。然后在您以编程方式选中一个框后立即触发更改事件,方法是调用$(this).change();。 -
很棒,效果很好。我很感激每个人都花时间在这上面。非常感谢!!!!
-
请注意,您可以选择带有空格stackoverflow.com/a/35423812/1343917的复选框
标签: javascript jquery html events checkbox