函数keyup即使没有被调用也会执行

时间:2013-12-01 09:49:15

标签: javascript jquery html

我有一个名为itemtitle的输入。当我点击一个按钮时,名为counter的元素增加1。所以下面的代码适用于第一项。 counter div的innerHTML为1,当我在itemtitle输入中写入时,文本显示在第1项上。

if (document.getElementById("counter").innerHTML === "1"){  
$("#itemtitle").keyup(function() {
$("#item1").html($("#itemtitle").val());
});

我再次点击按钮,计数器innerHTML上升到2.我有以下代码。

if (document.getElementById("counter").innerHTML === "2"){  
$("#itemtitle").keyup(function() {
$("#item2").html($("#itemtitle").val());
});

但是当我在itemtitle输入中写入时,文本会显示在item1和item2上。即使计数器值为2.我该如何解决这个问题?当计数器为1时,我只希望文本转到item1。当计数器为2时,它应该只进入第2项。

提前致谢

2 个答案:

答案 0 :(得分:0)

您正在根据这两个keyup条件注册if个事件,所以这并不意味着只有当events匹配时才会触发特定if condition事件。一直开火。所以你应该做的是,在if condition事件中写一个keyup,以便分支语句根据html值做出反应。即1或2

试试这个,

$("#itemtitle").keyup(function() {
   if($.trim($("#counter").html()) === "1")
     {
       $("#item1").html($(this).val());
     }
   else
     {
       $("#item2").html($(this).val());
     }
});

答案 1 :(得分:0)

我现在解决了。并且仍然能够将它们分开。我改成了:

$("#itemtitle").keyup(function() {
if (document.getElementById("counter").innerHTML === "1"){
$("#item1").html($("#itemtitle").val());
}
});

这样,只要我在输入中输入内容,它就会检查值。