我正在尝试根据选择框选择填充文本框。
我有示例代码(请参见下文),问题是:如果我对<form>
标记发表评论,则下面的代码正常工作,如果我取消注释<form>
代码,则该代码无效。你可以看下面的代码我做错了吗
P.S:我需要一个表单,因为我有许多其他表单字段,如文本框和选择下拉菜单,我只需要填充一个选项的文本框。
以下是代码:
<html>
<script type="text/javascript">
function test() {
var select = document.getElementById("select");
var texts = document.getElementById("texts");
var val = select.options.value;
texts.innerHTML = "";
if (select.options.value == 2) {
texts.innerHTML += 'Year:</td><div><td><input type="text" name="test" value="" /></div>';
}
}
</script>
<body>
<!--- <form name="myform">--->
<select id="select" size="1" onChange="JavaScript:test();" name ="test">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<hr/>
<tr><td>
<div id="texts"></div>
</td></tr>
<!--- </form>--->
</body>
</html>
答案 0 :(得分:1)
问题的核心在select onChange not working inside a form解释。
解释为什么由于作用域而在表单内部时元素的名称优先于函数名称。标准的做法是通过名称作为表单对象的一部分来访问表单元素。
例如,在给定的示例中,您可以通过属性window.myform.test
访问select,因为当解析onchange
时,select会在表单内部查看本地myform
范围在声明函数test
的窗口范围之前找到名为test
的选择。
没有表单test
仅在窗口范围内声明为函数。