在我的页面上,当用户单击按钮时,我使用ajax添加一个输入字段,当用户单击另一个按钮时,我将其删除。但是我想让用户在按下escape时删除该字段,这就是事情变得奇怪的地方。我使用此代码模拟指定元素的点击,我也尝试使用.click(),但那里没有区别。
$("#Field").keydown(function(Event) {
if(Event.which == 13) //Enter
$(".Add").trigger("click");
else if(Event.which == 27) //Escape
$(".Remove").trigger("click");
});
当我用鼠标手动单击按钮时,代码执行正常,但是当我按下escape时,ajax调用错误输出,我从错误回调中获得的唯一信息是字符串“error”。
我已经检查了发送的邮件,并且在两种情况下都发送了相同的帖子数据,但是当我在我的代码中模拟点击而不是手动点击时,ajax调用才到达服务器。
然而,当我按下回车键时,一切都按预期工作,单击按钮和按回车键之间没有区别。
这是当用户点击按钮或按任意键时执行的代码,它只是使用JQuery的ajax请求
$.ajax({
type: "POST",
url: "/index.php/main/handleclick",
data: "id=" + Id + "&class=" + Class + "&value=" + Field,
success: function(Response, Message){
if(Response != "undefined")
HandleResponse(Response, Message);
},
当我描述我的问题时,我不知道我是否足够清楚,脚本总是在这里结束,如果我点击按钮或按回车键或转义也没关系。问题是当我按下除了escape之外的任何其他键时,代码可以正常工作。
谢谢你 KERP
答案 0 :(得分:0)
一些指示:
.trigger("click")
应该有效(没有理由为什么它应该适用于一个键但不适用于另一个键。)if()
中包裹{}
语句的正文以避免意外错误。console.log()
查看调用的代码。如果您的浏览器不支持此功能,请添加<div id="#debug">
,将其设置为页面上方的绝对位置,并使用$('#debug').text()
进行记录。.Remove
,而不是ID。你确定这是你想要的吗?那个班级真的只有一个元素吗?