【发布时间】:2014-07-04 13:32:21
【问题描述】:
我制作了一个包含一个复选框和一个小输入字段的表单。我制作了一个脚本来做两件事:
- 如果复选框被选中,并且文本框中没有值,则将复选框的名称插入关联的文本字段中。
- 如果用户在文本框中输入内容并且相应复选框的复选框未选中,请选中它。
- 如果用户清除文本框,按删除/退格/等,清除复选框中的复选。
什么不工作: * 当用户在文本字段中键入时,复选框不会立即出现(通常是 2 个键分别键入),即使逻辑说调用时,如果未选中复选框,请选中它。 * 当用户使用退格/删除/等清除文本区域时,复选框仍然存在。
什么是有效的:
- 用户单击复选框以将复选框值自动插入到字段中。用户再次单击复选框以清除文本字段中的值。
Here is the related coding being run on JSFiddle
function autocheck(ElementName, SectionName) {
//window.alert('keyword-' + SectionName + '-' + ElementName.toLowerCase());
if (document.getElementById('keyword-' + SectionName + '-' + ElementName.toLowerCase()).checked == false)
{
document.getElementById('keyword-' + SectionName + '-' + ElementName.toLowerCase()).checked = true
}
if (document.getElementById('keyword-' + SectionName + '-entry-' + ElementName.toLowerCase()).value == '')
{
document.getElementById('keyword-' + SectionName + '-' + ElementName.toLowerCase()).checked = false;
}
}
function autofill(ElementName, SectionName) {
ElementName=ElementName.replace(" ", "-");
//window.alert('You got this: ' + ElementName);
if(document.getElementById('keyword-' + SectionName + '-' + ElementName.toLowerCase()).checked == true)
{
document.getElementById('keyword-' + SectionName + '-entry-' + ElementName.toLowerCase()).value = document.getElementById('keyword-' + SectionName + '-' + ElementName.toLowerCase()).value;
} else {
document.getElementById('keyword-' + SectionName + '-entry-' + ElementName.toLowerCase()).value = '';
}
}
这里是相关的 HTML
<input type="checkbox" name="ufs_split_keywords[]" value="Throw" id="keyword-split-throw" onclick="autofill(this.value, 'split');"> <label for="keyword-split-throw">Throw</label>
<br>
<input type="text" name="ufs_split_keywords_entry[]" id="keyword-split-entry-throw" style="width:100px; float: right;" onkeydown="autocheck('throw', 'split');">
【问题讨论】:
标签: javascript html checkbox textfield