我有一些 Javascript 的最终目标是每当按下“enter”键时,一条消息就会附加到我的无序列表中。现在,任何按下的键都会被附加,而不仅仅是“回车”键。例如,如果我输入“Y”,那将在按下任何其他按钮时提交。显然,我想要的只是输入到文本框中的数据,通过“输入”提交。

我的 HTML:

<ul id="messagebox" > 
</ul> 
 
<div> 
    <input type="text" id="typetextbox" maxlength="120" autocomplete="off" /> 
    <button type="submit" id="submit" onblur="submit"> </button> 
</div>  

这是 Javascript 的按钮触发部分:

$(document).ready(function(){ 
    $('#typetextbox').keypress(function (e){ 
        if(e.keyCode == 13 ); 
        $('#submit').click(); 
    }); 
}); 

这是用于附加消息的 Javascript:

$(document).ready(function(){ 
 
    $('#submit').click(function(){ 
        var message = $('#typetextbox').val(); 
        $('#messagebox').append(message + "<br/>"); 
        $("#typetextbox").val("");   
    }); 
}); 

为什么它不只挑出 Enter 按钮来提交?

请您参考如下方法:

keyCode实际上是事件的一个属性,所以你必须使用e.keyCode。 您还调用了 if(keyCode == 13 );:紧跟在右括号之后的分号 (;) 立即结束了 if 语句,因此下一行代码总是被执行。

正确代码如下:

$('#typetextbox').keypress(function (e){ 
    if(e.keyCode == 13 ) $('#submit').click(); 
}); 

要将消息附加到 ul 元素,您应该首先创建一个 li 元素,然后将其附加到 ul 元素。

正确代码如下:

$('#submit').click(function() { 
    var message = $('#typetextbox').val(); 
 
    if (message.replace(/ /g, '')) // If the text is not empty (e.g. nothing or only spaces) 
        $('#messagebox').append( $('<li>', {text: message}) ); 
    $("#typetextbox").val("");   
}); 

顺便说一句,您不需要$(document).ready 函数来执行此操作。只需将您的脚本放在 dom 中的文本区域之后,它就可以正常工作。

这是 fiddle :http://jsfiddle.net/t7q4j/1/


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

javascript之如何在 Ubuntu 的控制台中设置 slimerjs