首页 新闻 搜索 专区 学院

怎么让e.keyCode == 13只执行一次

0
[已解决问题] 解决于 2017-05-17 18:07

我做的是一个有textbox的弹框,做了enter的判断,如果是回车操作则将文本框中的内容拼接一个<br/>,第一次点开弹框的时候是正常的只拼接一次,但是之后点开弹框时拼接的次数依次累加了,也就是说if(e.keyCode==13){}方法进入到次数是一次累加的,为什么?

$('#versionText').textbox('textbox').keydown(function (e) {
                if (e.keyCode == 13) {
                     text = $('#versionText').textbox('getValue');
                     $('#versionText').textbox('setValue',text+"<br/>");
                }
            });
libaylor的主页 libaylor | 初学一级 | 园豆:189
提问于:2017-05-17 17:02
< >
分享
最佳答案
0

除了自己定义一个变量,让方法只执行一次之外,还可以将此方法拿出来放到弹框事件的外面。

方法一:

$("#add").click(function(){
    reloadFlag = true;
    if(test){
        $('#versionText').textbox('textbox').keydown(function (e) {
             if (e.keyCode == 13) {
         text = $('#versionText').textbox('getValue');
        $('#versionText').textbox('setValue',text+"<br/>");
             }
           });
         }
         test=false;
    ...... )};

方法二:

$('#versionText').textbox('textbox').keydown(function (e) {
            if (e.keyCode == 13) {
                 text = $('#versionText').textbox('getValue');
                 $('#versionText').textbox('setValue',text+"<br/>");
            }
    });
$("#add").click(function(){......
    });
libaylor | 初学一级 |园豆:189 | 2017-05-17 18:00
其他回答(1)
0

你这是每次点开都挂接事件了吧?才会造成多次触发。这样一来每点开一次,就挂一个事件,第二次点开,挂了两个事件。

第三次点开,挂了三个事件....

爱编程的大叔 | 园豆:30664 (高人七级) | 2017-05-17 17:18

我不太懂什么叫挂接事件,但是我这样改了之后就可以了,让if只执行一次。我还是不明白之前为什么出现这种情况。

var test=true;
if(test){
      $('#versionText').textbox('textbox').keydown(function (e) {
      if (e.keyCode == 13) {
           text = $('#versionText').textbox('getValue');
           $('#versionText').textbox('setValue',text+"<br/>");
        }
       });
 }
 test=false;
支持(0) 反对(0) libaylor | 园豆:189 (初学一级) | 2017-05-17 17:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册