Javascript onKeyDown事件未触发
我制作了一个表单,其中包含一个复选框和一个小的输入字段。我制作了一个脚本来做两件事:Javascript onKeyDown事件未触发,javascript,html,checkbox,textfield,Javascript,Html,Checkbox,Textfield,我制作了一个表单,其中包含一个复选框和一个小的输入字段。我制作了一个脚本来做两件事: 如果复选框已选中,且文本框内没有值,请将复选框的名称插入关联的文本字段 如果用户在文本框中键入内容,并且未选中相应复选框的复选框,请选中该复选框 如果用户清除文本框,请按delete/backspace/etc,从复选框中清除复选框 什么不起作用: *当用户在文本字段中键入时,复选框不会立即出现(通常分别键入两个键),即使逻辑表明在调用时,如果复选框未选中,请选中它。 *当用户使用退格/删除等清除文本区域时
- 如果复选框已选中,且文本框内没有值,请将复选框的名称插入关联的文本字段
- 如果用户在文本框中键入内容,并且未选中相应复选框的复选框,请选中该复选框
- 如果用户清除文本框,请按delete/backspace/etc,从复选框中清除复选框
- 用户单击复选框可将复选框值自动插入字段。用户再次单击复选框以清除文本字段中的值
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');">
抛出
使用onkeyup而不是onkeydown强>
因为只有这样才能得到字段的更改值
在按下键事件的时间点,输入值将为旧值/不变。
记住按键输入的基本生命周期:
也可以在用户持有密钥时多次应用
这对我很有用。(只有onkeydown更改为onkeyup的代码)
函数自动检查(ElementName,SectionName){
//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())。值=“”)
{
document.getElementById('keyword-'+SectionName+'-'+ElementName.toLowerCase())。checked=false;
}
}
函数自动填充(ElementName,SectionName){
ElementName=ElementName.replace(“,“-”);
//alert('您得到了这个:'+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;
}否则{
document.getElementById('keyword-'+SectionName+'-entry-'+ElementName.toLowerCase())。值='';
}
}
扔
使用onkeyup而不是onkeydown强>
因为只有这样才能得到字段的更改值
在按下键事件的时间点,输入值将为旧值/不变。
记住按键输入的基本生命周期:
也可以在用户持有密钥时多次应用
这对我很有用。(只有onkeydown更改为onkeyup的代码)
函数自动检查(ElementName,SectionName){
//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())。值=“”)
{
document.getElementById('keyword-'+SectionName+'-'+ElementName.toLowerCase())。checked=false;
}
}
函数自动填充(ElementName,SectionName){
ElementName=ElementName.replace(“,“-”);
//alert('您得到了这个:'+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;
}否则{
document.getElementById('keyword-'+SectionName+'-entry-'+ElementName.toLowerCase())。值='';
}
}
扔
是的,这非常有效。我不明白OnKeyUp和OnKeyDown之间的区别。我还添加了一个OnBlur,以防用户用鼠标选择所有内容,然后使用正确的cl
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
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 = '';
}
}
</script>
</head>
<body>
<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;" onkeyup="autocheck('throw', 'split');">
</body>
</html>