我有一些 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/