2011-11-21 73 views
0

在我的頁面上,當用戶單擊某個按鈕時,我會添加一個帶有Ajax的輸入字段,並在用戶單擊另一個按鈕時將其刪除。不過,我希望允許用戶在按下轉義時刪除該字段,這就是奇怪的地方。我使用這段代碼來模擬指定元素的點擊,我也嘗試使用.click(),但這裏沒有區別。使用.trigger模擬點擊時,JQuery ajax調用失敗()

$("#Field").keydown(function(Event) { 
    if(Event.which == 13) //Enter 
     $(".Add").trigger("click"); 
    else if(Event.which == 27) //Escape 
     $(".Remove").trigger("click"); 
}); 

當我手動我的鼠標點擊按鈕的代碼執行罰款,但是當我按逃避AJAX調用錯誤了,我從錯誤回調得到的唯一信息是字符串「錯誤」。

我檢查了發送的消息,並在兩種情況下都發送了相同的發佈數據,但是當我在代碼中模擬點擊而不是手動點擊時,ajax調用並未到達服務器。

然而,當我按下回車鍵時,一切都如預期的那樣工作,點擊按鈕並按下回車鍵沒有區別。

這是當用戶點擊按鈕或按任意鍵,它只是使用JQuery

$.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); 
       }, 

當我描述了我的問題,我不知道我很清楚一個Ajax請求被執行的代碼,腳本總是在這裏結束,不管我點擊按鈕還是按回車鍵或轉義鍵。問題是,當我按下除轉義以外的任何其他鍵時,代碼的工作方式應該如此。

感謝
KERP

+0

請點擊觸發時顯示執行的函數 –

回答

0

一些指針:

  • 因爲回車鍵的作品,.trigger("click")應該工作(沒有理由爲什麼要爲一個鍵而不是其他工作)。
  • {}中包含if()語句的主體以避免意外錯誤。
  • 使用console.log()來查看調用哪些代碼。如果您的瀏覽器不支持此功能,請添加<div id="#debug">,將其設置爲頁面上方的絕對位置,並使用$('#debug').text()進行登錄。
  • 您使用的.Remove與類匹配,而不是ID。你確定這是你想要的嗎?這個類真的只有一個元素嗎?
  • 使用你是瀏覽器的調試器來確保執行正確的代碼。