0

我是新来的(一般是 Web 开发),我一直在试图理解为什么我的函数没有在指定的事件上执行。

我找到了这篇文章,它看起来和我想要的完全一样,但即使这样也没有用:

html <input type="text" /> onchange 事件不起作用

任何帮助,将不胜感激。我的确切代码如下。我有一些文本输入字段(实际上是搜索框),最终我想让它在用户将数据输入文本字段时选中一个复选框,但它甚至似乎都没有调用该函数。

在阅读上述帖子时,我尝试了一些变体。以下是我尝试过的一些输入字段属性:

<input type="date" name="dt" size="10" value="2012-07-21" onChange="SetCheckBox('d')" />
<input type="search" size="10" name="sl" value="" onChange="SetCheckBox('n')" />
<input type="search" size="10" name="sf" value="" onkeypress="SetCheckBox('n')" />
<input type="search" size="20" name="st" value="" onkeypress="SetCheckBox(this);" />

这是我的javascript:

<script language="javascript" type="text/javascript">
    Function SetCheckBox(id) {
        alert (id.value);
        document.write('test');
    }
</script>

我试过不传递任何参数而只做一个document.write,但它似乎没有调用该函数。是的,javascript 已启用,并且可以在页面上的其他地方正常工作!脚本在正文中,就在表单的下方。

(缺乏)行为在多个浏览器中是相同的。感谢您提供任何帮助。射线

4

4 回答 4

1

对于 javascript,function关键字是小写的。

Function SetCheckBox(id)

需要是:

function SetCheckBox(id)

另外,您没有传递对象来获取 id,所以...

function SetCheckBox(id) {
        var ele = document.getElemenyById(id);
        alert (ele.value);
        document.write('test');
 }
于 2012-08-23T16:11:34.720 回答
1

除了已经提到的Function中的大写F之外的几个问题

  1. 您的函数传递了一个名为 id 的变量,但需要一个字段
  2. 您传递的字符串不是 ID 且未引用字段
  3. 只有使用 (this) 的最后一个版本才有效,但没有值得提醒的地方
  4. document.write 将在页面加载后调用它时擦除页面及其上的所有脚本(例如,非内联)

所以代码应该是

function SetCheckBox(id) {
    var val = document.getElementById(id).value
    alert (val);
    document.getElementById('someContainer').innerHTML=val;
}

或者

function SetCheckBox(fld) {
    var val = fld.value
    alert (val);
    document.getElementById('someContainer').innerHTML=val;
}

根据您的描述,我猜您想这样做:DEMO

<input type="date" id="dt" name="dt" size="10" value="2012-07-21"
onkeypress="SetCheckBox(this)" />
<input type="checkbox" id="dtChk" />

使用这个脚本

function SetCheckBox(fld) {
    var checkbox = document.getElementById(fld.id+"Chk");
    // check if something is entered, uncheck if not
    checkbox.checked=fld.value.length>0; 
}

甚至可能加上这个

window.onload=function() {
  document.getElementById("dt").onkeypress();
}

如果该字段在(重新)加载时不为空,它将选中该框

于 2012-08-23T16:18:04.683 回答
0

在 javascript 中,函数关键字是用小写字母写的,在这里你用大写字母写了 F。

于 2012-08-23T16:14:04.103 回答
0

onkeypress 和 onchange 事件应该可以工作

<body>
<script type="text/javascript">

function SetCheckBox() {
    alert("1");
}

</script>

<input id = "test" value="" onkeypress="SetCheckBox();" />

<input id = "test1" value="" onchange="SetCheckBox()" />

</body>
于 2012-08-23T16:20:16.760 回答