根据下拉列表中的选择填充文本框

时间:2014-04-10 23:29:05

标签: javascript

我正在尝试根据选择框选择填充文本框。

我有示例代码(请参见下文),问题是:如果我对<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>

1 个答案:

答案 0 :(得分:1)

问题的核心在select onChange not working inside a form解释。

解释为什么由于作用域而在表单内部时元素的名称优先于函数名称。标准的做法是通过名称作为表单对象的一部分来访问表单元素。

例如,在给定的示例中,您可以通过属性window.myform.test访问select,因为当解析onchange时,select会在表单内部查看本地myform范围在声明函数test的窗口范围之前找到名为test的选择。

没有表单test仅在窗口范围内声明为函数。