【问题标题】:Change value of input onchange?改变输入onchange的值?
【发布时间】:2011-07-24 09:14:37
【问题描述】:

我正在尝试创建一个简单的 JavaScript 函数。当有人在input 字段中插入数字时,另一个字段的值应更改为该值。这是我目前拥有的:

function updateInput(ish) {  
    fieldname.value = ish;  
}  
<input type="text" name="fieldname" id="fieldname" />  
<input type="text" name="thingy" onchange="updateInput(value)" /> 

不知怎的,这不起作用,有人可以帮助我吗?

【问题讨论】:

  • 对于寻找如何监听输入元素的更改/输入事件的谷歌用户check this answer

标签: javascript html


【解决方案1】:

您无法将fieldname 作为全局变量访问。使用document.getElementById:

function updateInput(ish){
    document.getElementById("fieldname").value = ish;
}

onchange="updateInput(this.value)"

【讨论】:

  • 实际上,对于每个具有“id”属性的 DOM 元素,都会在全局 Window 对象上创建一个匹配的变量。 (打开控制台并在此页面上键入“mainbar”)。不仅如此,对于现代浏览器,您只需键入“value”并留下“this”即可。
  • 为了方便起见,我通常将其添加到我的页面中:function id(id){return document.getElementById(id);} 并像这样使用它id("whatever").whatever
【解决方案2】:

对于jQuery,我们可以在下面使用:

按输入名称:

$('input[name="textboxname"]').val('some value');

按输入类:

$('input[type=text].textboxclass').val('some value');

通过输入ID:

$('#textboxid').val('some value');

【讨论】:

    【解决方案3】:
    <input type="text" name="fieldname" id="fieldtobechanged" />  
    <input type="text" name="thingy"  id="inputfield" />
    

    我使用了以下代码,它可以立即运行,没有任何延迟。

    var timeoutID = null;
        
    function findMember(str) {
        document.getElementById("fieldname").innerHTML = str;
    }
    
    $('#inputfield').keyup(function(e){
        clearTimeout(timeoutID);
        timeoutID = setTimeout(findMember.bind(undefined, e.target.value), 500);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-23
      • 2019-10-09
      相关资源
      最近更新 更多