我有一张表格。我们称它为myform。
里面有复选框,例如这两个:
<input type='checkbox' name='power_convention[]' value='SOME VALUE #1' />
<input type='checkbox' name='power_evidence[]' value='SOME VALUE #2' />
在表格的最后,有一个textarea。
<textarea id="elm1" name="comments" rows="15" cols="80" style="width: 80%">
如果选中power_convention,我希望它立即将该复选框的值附加到comments
复选框中,其结构如下:
<h3>SOME VALUE #1</h3><br />
同样,如果点击power_evidence,我希望它做同样的事情,但显然是在它之前发生的任何事情之后。
我将如何做到这一点?
谢谢!
答案 0 :(得分:2)
jQuery解决方案:
$('input[type="checkbox"]').change(function() {
var val = "<h3>" + this.value + "</h3><br />";
if(this.checked) {
$('#elm1').val(function(i, v) {
return v + val;
});
}
else {
$('#elm1').val(function(i, v) {
return v.replace(new RegExp(val), '');
});
}
});
仅当val
不包含任何特殊正则表达式字符时才有效。在这种情况下you would have to escape them。
更新:实际上,您不需要正则表达式,v.replace(val, '')
就可以了(感谢@Pinkie);
正则表达式的替代方法是重新创建textarea的内容:
var $inputs = $('input[type="checkbox"]');
$inputs.change(function() {
var val = "<h3>" + this.value + "</h3><br />";
if(this.checked) {
$('#elm1').val(function(i, v) {
return v + val;
});
}
else {
$('#elm1').val('');
$inputs.not(this).change();
}
});
答案 1 :(得分:1)
<强>的jQuery 强>
$('input[name="power_convention[]"]').click(function() {
// assuming you only want the value if the checkbox is being ticked
// not when it's being unticked
if ($(this).is(":checked")) {
$('#elm1').val("<h3>" + this.value + "</h3><br />");
}
});
如果您希望它们都插入相同的textarea
(并且它们是页面上以 power _ 开头的唯一字段),那么您可以更改要使用的选择器
jQuery的Attribute Starts With选择器:
`$('input[name^="power_"]`
答案 2 :(得分:0)
首先,您需要在复选框中添加onClick事件处理程序:
<input type='checkbox' onClick="someFunction(this)" name='power_convention[]' value='SOME VALUE #1' />
然后,在head部分中,在脚本标记中,输入
someFunction(checkbox) {
document.getElementById("elm1").value += "<h3>" + checkbox.value + "</h3>";
}
答案 3 :(得分:0)
这是jsfiddle
$('input:checkbox[name*=power_]').click(function(){
value = '<h3>' + $(this).val() + '</h3> <br />';
prevVal = $('#elm1').val();
$('#elm1').val(prevVal + value );
});