javascript 更改 select 并更新输入或文本对象

javascript onchage select and update an input or text object

我想制作一个 selection(没有 php 或其他代码),当值发生变化时,我想将值放在另一个 html 标记中,例如输入字段。我看过 w3 学校,只有获取 select 标签值的代码。这是我尝试过的:

<body>

         <select name="selection" id="selection" onchange="update(this.value)">
              <option value="1">One</option>
              <option value="2">Two</option>
              <option value="3">Three</option>

          </select>

<input name="desc" type="text" id="desc" />

</body>
<script>
function update(val) {
    var x = document.getElementsByName("desc");
    x.value = val;
    $('desc').val(val);
 }
 </script>

那么,输入文本中的值应该更新为 select 中的值吗?什么都没发生

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>

         <select name="selection" id="selection" onchange="update(this.value)">
              <option value="1">One</option>
              <option value="2">Two</option>
              <option value="3">Three</option>

          </select>

<input name="desc" type="text" id="desc" />

</body>
<script>
function update(val) {
    var x = document.getElementsByName("desc");
    x[0].value = val;
    $('desc').val(val);
 }
 </script>

document.getElementsByName return array,你必须为x提供索引才能提供值

可能

    <!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <script>
 function update(combo) {
    var x = document.getElementById("desc");
    x.value = combo.options[combo.selectedIndex].value;
 }    
  </script>
  <!--js-->
</head>

<body>
<select name="selection" id="selection" onchange="update(this)">
              <option value="1">One</option>
              <option value="2">Two</option>
              <option value="3">Three</option>

          </select>

<input name="desc" type="text" id="desc" />
</body>
</html>

其实我觉得你想多了:

<html>
  <head>
    <script
  src="https://code.jquery.com/jquery-3.2.1.js"
  integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
  crossorigin="anonymous"></script>
  </head>
<body>

         <select name="selection" id="selection" onchange="update(this.value)">
              <option value="1">One</option>
              <option value="2">Two</option>
              <option value="3">Three</option>

          </select>

<input name="desc" type="text" id="desc" />

</body>
<script>
function update(val) {
    $('#desc').val(val);
 }
 </script>
</html>

你可以使用非常少的jQuery代码

   <select name="selection" id="selection" >
              <option value="1">One</option>
              <option value="2">Two</option>
              <option value="3">Three</option>
          </select>
<input name="desc" type="text" id="desc" />

  $(document).ready(function() {
      $("#selection").change(function(){  
        $('#desc').val(this.value);
      });
    });

您可以对脚本进行两​​处更改。

A) 删除 $('desc').val(val) 行。不需要,因为 x.value = val 就足够了。

B) 您可以将 var x = document.getElementsByName("desc") 更改为 var x = document.getElementById("desc")。由于您的名称和 ID 相同,我们可以使用 getElementById() 代替当前的。作为 getElementsByName() returns 一个数组。

所以代码看起来像。

<select name="selection" id="selection" onchange="update(this.value)">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
</select>

<input name="desc" type="text" id="desc" />

<script>
function update(val) {
    var x = document.getElementById("desc");
    x.value = val;
}
</script>

此外,由于您是通过 onchange 事件调用 javascript 方法,如果 select 元素只有 1 个选项,您的解决方案将不起作用。要解决此问题,请根据您的用例尝试使用 onblur 或 onclick 代替 onchange。