使用.trigger()模拟点击时,JQuery ajax调用失败

时间:2011-11-21 08:41:47

标签: jquery

在我的页面上,当用户单击按钮时,我使用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

1 个答案:

答案 0 :(得分:0)

一些指示:

  • 由于返回键有效,.trigger("click")应该有效(没有理由为什么它应该适用于一个键但不适用于另一个键。)
  • if()中包裹{}语句的正文以避免意外错误。
  • 使用console.log()查看调用的代码。如果您的浏览器不支持此功能,请添加<div id="#debug">,将其设置为页面上方的绝对位置,并使用$('#debug').text()进行记录。
  • 您使用的是匹配类的.Remove,而不是ID。你确定这是你想要的吗?那个班级真的只有一个元素吗?
  • 使用浏览器的调试器来确保执行正确的代码。