Javascript 捕获回车键
我正在尝试按如下方式捕获Enter键Javascript 捕获回车键,javascript,jquery,Javascript,Jquery,我正在尝试按如下方式捕获Enter键 $("#txt1").keypress(function(event){ if(event.which==13) //Also tried using event.keycode $("#add").load("newjsp.jsp?q="+this.value) }) 但每次我按enter键时,文本都会被删除,并且不会以它应该显示的形式(#add)显示。我该怎么做 我在下面的代码中也遇到了一个问题 $("#txt1").keyup(fu
$("#txt1").keypress(function(event){
if(event.which==13) //Also tried using event.keycode
$("#add").load("newjsp.jsp?q="+this.value)
})
但每次我按enter键时,文本都会被删除,并且不会以它应该显示的形式(#add)显示。我该怎么做
我在下面的代码中也遇到了一个问题
$("#txt1").keyup(function(event){
$("#add").load("newjsp.jsp?q="+this.value)
})
<form>
Comment: <input type="text" id="txt1"></input>
</form>
<p><p></p></p>
<form id="add">
</form>
$(“#txt1”).keyup(函数(事件){
$(“#添加”).load(“newjsp.jsp?q=“+this.value”)
})
评论:
当我运行此代码时,文本框中的文本将添加到我的表单中(
#add
),但当我按空格键时,文本将被删除(从#add
表单而不是从文本框中),然后不再添加任何文本。我尝试过使用keydown
和keypress
,但同样的问题仍然存在。我无法理解问题所在,因为此.value在文本框中为我提供了完整的值!包括空格。此.value确实会将按下的键添加到加载请求中。但是,您的浏览器可能会将请求的url上的空格从“q=hello”改为“q=hello”
在请求中使用该值之前,应先转义该值
在这里看一看javascript escape()函数:对于第二个问题,您应该使用它来编码值,以便在url中使用它们:
$("#txt1").keyup(function(event){
$("#add").load("newjsp.jsp?q="+encodeURIComponent(this.value));
})
对于第一个问题,您应该阻止默认操作并停止传播:
$('#txt1').keypress(function(e){
e.preventDefault();
e.stopImmediatePropagation()
if (e.which===13) {
$("#add").load("newjsp.jsp?q=" + $(this).val());
}
});
你的第一个例子是正确的。除非在按下“回车”键后需要防止事件冒泡。默认情况下按enter键提交表单。FinalFrag关于空格的描述是正确的
$('#txt1').keypress(function(e){
if (e.which===13) {
e.preventDefault();
e.stopImmediatePropagation();
$("#add").load("newjsp.jsp", {q: $(this).val()} );
}
});
*编辑以反映Tomalak的评论。更好:
$(“#add”).load(“newjsp.jsp”,{q:$(this.val())
@Final:escape()
绝对错误。使用encodeURIComponent()
。谢谢你,伙计!。。。现在效果很好。那么,是不是我的浏览器无法正确理解或解释文本(即使用空格)?因为当我用javascript编写相同的代码时,它可以很好地工作,而不会转义。使用innerHTML将用现有内容覆盖以前的内容。@Rishabh:捕获Enter键的代码无效,我无法在文本框中输入文本。