当<input />值已被另一个函数修改时,如何调用javascript函数?

时间:2018-01-25 21:16:08

标签: javascript jquery html

第一个keyup事件将更改一个输入的值,但是在未调用时更改一个输入gn()

这是我的代码

&#13;
&#13;
function fn() {
  document.getElementById("one").value = "abc"
}

function gn() {
  document.getElementById("two").value = "def"
}
&#13;
<input type="number" onkeyup="fn()">
<input type="number" id="one" onchange="gn()">
<input type="number" id="two">
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

您尝试将数字输入的值设置为字符串,甚至不能将其设置为数字。

用以下功能替换您的功能:

document.getElementById("one").value = "123";

 document.getElementById("one").value = 123;

这将有效。

如果要将输入设置为abc,则应将输入类型从数字切换为文本

<input type="text" id="one" onchange="gn()">

修改 我将我提议的将输入更改为文本的解决方案复制到HTML文件中。以下是该文件的全部内容:

  1 <html>
  2 
  3 <input type="text" onkeyup="fn()">                                                                                                                                                  
  4 <input type="text" id="one" onchange="gn()">
  5 <input type="text" id="two">
  6 
  7 <script>
  8     function fn(){ document.getElementById("one").value = "abc"}
  9     function gn(){ document.getElementById("two").value = "def"}
 10 </script>
 11 </html>

这样,第一个框中的keyup事件会将第二个输入更改为abc。更改值(如输入值并单击输出)第二个框将使第3个框的值为def。

答案 1 :(得分:1)

第一项作业无效,因为您尝试将“数字”输入设置为非数字值。

第二个赋值不起作用,因为当脚本修改字段的值时,不会触发onchange事件;你必须手动创建和发送事件:

function fn() {
  // This will work because the #one input is now type="text"
  document.getElementById("one").value = "abc";

  // now create and dispatch a change event on the field you modified:
  var evt = new Event('change');
  document.getElementById("one").dispatchEvent(evt)
  // (Or, of course, just call gn() directly here.)
}

function gn() {
  document.getElementById("two").value = "def"
}
<input type="text" onkeyup="fn()">
<input type="text" id="one" onchange="gn()">
<input type="text" id="two">