【问题标题】:Javascript change input value when select option is selected选择选择选项时Javascript更改输入值
【发布时间】:2017-06-21 14:44:00
【问题描述】:

我对 javascript 很陌生。所以我有一个选择选项和一个输入字段。我想要实现的是在我选择特定选项时改变输入字段的值。这是我尝试过的:

First Name: <input type="text" value="colors">

<select name="">
   <option>Choose Database Type</option>
   <option onclick="myFunction(g)>green</option>
   <option onclick="myFunction(r)>red</option>
   <option onclick="myFunction(o)>orange</option>
   <option onclick="myFunction(b)>black</option>
</select>

<script>
function myFunction(g) {
    document.getElementById("myText").value = "green";
}
function myFunction(r) {
    document.getElementById("myText").value = "red";
}
function myFunction(o) {
    document.getElementById("myText").value = "orange";
}
function myFunction(b) {
    document.getElementById("myText").value = "black";
}
</script>

【问题讨论】:

  • 1.请考虑 DRY 原则。 2. 您没有 ID 为“text”的元素。 3. 您传入未定义的参数。 4. 你不使用它们。
  • 不要试图听起来太刻薄/苛刻,我建议你先去学习一些基本的 JavaScript 教程,然后再问这样的问题,就好像你知道一点 JS 你就知道问题。
  • @evolutionxbox 5. 他的函数名称相同,因此覆盖了以前的函数,这是imo的主要问题
  • onchange select box的可能重复
  • @George 是的。这比什么都重要……

标签: javascript html input show-hide


【解决方案1】:

一些事情:

您应该在每个单独的选项上使用onchange 函数,而不是onclick

在每个选项上使用value 属性来存储数据,并使用this 的实例来分配更改(或event.target

您的文本字段中没有 ID

您缺少 onclick 函数的结束引号

<select name="" onchange="myFunction(event)">
    <option disabled selected>Choose Database Type</option>
    <option value="Green">green</option>
    <option value="Red">red</option>
    <option value="Orange">orange</option>
    <option value="Black">black</option>
</select>

以及功能:

function myFunction(e) {
    document.getElementById("myText").value = e.target.value
}

并添加ID

<input id="myText" type="text" value="colors">

小提琴:https://jsfiddle.net/gasjv4hs/

【讨论】:

  • 就像我前面说的,我对javascript很陌生。非常感谢您的解释。成功了!
  • 请我尝试在CKEditor 上实现此功能,但它不起作用。你知道我怎样才能让它发挥作用吗?
  • @DanielC。 - 抱歉 - 我对 CKEditor 不是很熟悉 - 我猜它与脚本的位置有关 - 确保在 HTML 之后加载脚本。
【解决方案2】:

更正确的方法是将您的 JS 代码放在不同的 .js 文件中并使用 Jquery,因为当您进一步编程时,这是正确的方法。

您的 HTML

<input type="text" id="color" name="color">
<select name="" id="changeData">
<option>Choose Database Type</option>
<option data-value="green">green</option>
<option data-value="red">red</option>
<option data-value="orange">orange</option>
<option data-value="black">black</option>
</select>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"> 
</script>

你的 JS

$(document).ready(function () {     
$('#changeData').change(function(){
var color = $(this).val();
$('#color').val(color);
})
});

还要确保您已将 Jquery 库添加到您的项目中。您可以下载 Jquery 并添加到您的项目文件夹中,也可以使用 CDN。在此示例中使用 CDN。

【讨论】:

    【解决方案3】:

    我遇到了类似的问题。在我的情况下,我试图根据选择列表中选项的值来更改输入的最小值。我尝试应用上述解决方案,但没有任何效果。所以我就自带了这个,可以应用于类似这个的问题

    HTML

    <input id="colors" type="text" value="">
    
    <select id="select-colors" name="" onchange="myFunction()">
       <option disabled selected>Choose Colour</option>
       <option value="green">green</option>
       <option value="red">red</option>
       <option value="orange">orange</option>
       <option value="black">black</option>
    </select>
    

    JS

    function myFunction() {
    var x = document.getElementById("select-colors").value;
    document.getElementById("colors").value = x;
      }
    

    这通过在每次更改时获取 id 为“select-colors”的选择值,将其分配给变量“x”并将其插入到 id 为“colors”的输入值中。这可以根据您的问题以任何方式实现

    【讨论】:

      【解决方案4】:

      您多次创建具有相同名称的函数。

      只有最后一个有效。

      您传递的变量g,r,o,b 未定义。

      不要将onclick 添加到optiononchange 添加到select

      利用HTML5data-*属性

      function myFunction(element) {
        document.getElementById("myText").value = element;
      }
      First Name: <input type="text" id="myText" value="colors">
      
      <select name="" onchange="myFunction(this.value);">
         <option>Choose Database Type</option>
         <option data-value="green">green</option>
         <option data-value="red">red</option>
         <option data-value="orange">orange</option>
         <option data-value="black">black</option>
      </select>

      【讨论】:

      • 请我尝试在CKEditor 上实现此功能,但它不起作用。你知道我怎样才能让它发挥作用吗?
      【解决方案5】:

      你可以这样解决。

      `名字:

      <select name="" onchange="myFunction()" id="selectID">
         <option>Choose Database Type</option>
         <option >green</option>
         <option >red</option>
         <option >orange</option>
        <option >black</option>
      </select>
      
      <script>
      function myFunction() {
          var selectItem = document.getElementByID('selectID').value;
           document.getElementByID('yourId').value = sekectItem;
      
      }
      </script>
      

      【讨论】:

        【解决方案6】:

        这是实现这一目标的一种方法:

        var select = document.getElementById('colorName');
        
        function myFunction(event) {
          var color = 'No color selected';
        
          if (select.selectedIndex > 0) {
            color = select.item(select.selectedIndex).textContent;
          }
          
          document.getElementById('myText').value = color;
        }
        
        select.addEventListener('click', myFunction);
        
        myFunction();
        First Name: <input type="text" id="myText">
        
        <select id="colorName">
           <option>Choose Database Type</option>
           <option>green</option>
           <option>red</option>
           <option>orange</option>
           <option>black</option>
        </select>

        【讨论】:

        • 请我尝试在CKEditor 上实现此功能,但它不起作用。你知道我怎样才能让它发挥作用吗?
        【解决方案7】:

        您的代码应如下所示。

        <input type="text" name="color" id="color">
         <select name="" id="change_color">
            <option>Choose Database Type</option>
           <option >green</option>
             <option >red</option>
            <option >orange</option>
           <option >black</option>
        </select>
        <script type="text/javascript" src="jquery.js"></script>
        <script>
            $(document).ready(function () {     
            $('#change_color').change(function(){
            var color = ($(this).val());
            $('#color').val(color);
            })
            });
        </script>
        

        【讨论】:

        • 请我尝试在CKEditor 上实现此功能,但它不起作用。你知道我怎样才能让它发挥作用吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-17
        • 1970-01-01
        • 2015-03-24
        • 2017-10-05
        相关资源
        最近更新 更多