2011-04-27 124 views
4

我有2個asp文本框,我已附加jQuery觸發linkbutton服務器端點擊如果在任何2個文本框上按下輸入鍵。但是這似乎並不奏效,請幫我解釋我在做什麼錯了。我需要一個適用於所有主流瀏覽器[IE7,8,9],[Firefox 3,4],Safari [4,5]的解決方案。觸發asp.net鏈接按鈕點擊輸入鍵按

這裏是我的代碼,

<script language="javascript" type="text/javascript"> 
function GC_PostBack() { 
    jQuery('#<%=lnkSubmitGiftCardNumber.ClientID%>').trigger("click"); 
} 

和服務器端的PN Page_Load中,我附加了此功能,文本框的onkeypress事件的事件。我試過使用.click()而不是.trigger(「click」),但無濟於事。我試過使用.click()而不是.trigger(「click」),但無濟於事。請幫忙!

謝謝。

回答

1

下面的工作來觸發回傳:

document.getElementById('<%= lnkSubmitGiftCardNumber.ClientID %>').click(); 
+0

沒有,這似乎並沒有工作。我試着改變我的jQuery函數,並直接插入Page_Load中的Attributes.Add。 – 2011-04-27 21:12:21

+0

我用你的確切代碼(用我的答案)進行了一次測試,它的工作完美。代碼確實有效。如果它不適合你,那麼在頁面上一定有其他干擾的東西。作爲測試,嘗試從頁面上的簡單鏈接觸發回發。它應該回發。 – 2011-04-27 21:51:56

2

艾莉森是正確的,如果你想使用jQuery像你這樣,只是做:

<script language="javascript" type="text/javascript"> 
    function GC_PostBack() { 
     jQuery('#<%=lnkSubmitGiftCardNumber.ClientID%>').click(); 
    } 
</script> 

編輯:

如果您使用jQuery,爲什麼不使用jQuery來處理所有這些?目前,您所擁有的按鍵事件不能用於跨瀏覽器。我建議像這樣:

(function() { 

    $('input[id$="txtGiftCardNumber"], input[id$="txtGiftCardPin"]') 
     .keypress(function(e) { 

      var keyCode; 

      if (window.event) keyCode = window.event.keyCode; 
      else if(e) keyCode = e.which; 
      else return true; 

      if (keyCode == 13) { 

       $('[id$="lnkSubmitGiftCardNumber"]').click(); 
       return false; 

      } else return true; 

     }); 

}); 
+0

我已經厭倦了使用onclick,但它似乎沒有觸發回發,並調用鏈接按鈕的服務器端處理程序。 – 2011-04-27 21:19:04

+0

@Ashar - 檢查我編輯的答案。您不需要在代碼隱藏中附加客戶端事件。爲此使用jQuery。另外,不要試圖使用'<%= Element.ClientID%>',即使它可以工作,也可以使用'id $ =',因爲您不需要知道ClientID。它會搜索一個「以......結尾」的元素,然後再放入。所以在我們的例子中,它可以是任何你命名的元素,例如'txtGiftCardNumber'和'txtGiftCardPin'。更容易。同樣,在觸發的'click()'事件之上,你可以做一個alert(「觸發點擊」);'只是爲了驗證它的工作。 – 2011-04-27 22:59:58

0

您可以在客戶端使用JQUERY進行所有操作。讓我們說txtGiftCardNumber具有txtGiftCardNumberID在這種情況下,ID可以關聯的keydown這是一個更好的情況下,與IE

$('input:text[id$=txtGiftCardNumberID ]').keydown(function (event) { 
      if (event.keyCode == '13') { 
      $('#'+<%= lnkSubmitGiftCardNumber.ClientID %>).click(); 
      } 
     } 
    }); 
1

我明白這是一篇舊文章,但可能還有其他人像我一樣在尋找答案。我試過這段代碼,它對我來說工作正常。檢查「Enter key」是否相同,但是__doPostBack()而不是click()。

__doPostBack('<%=lnkSubmitGiftCardNumber.UniqueID%>', ''); 
1
<asp:LinkButton ID="LinkButton1" OnClick="LinkButton1_Click"runat="server">G</asp:LinkButton> 

    $(document).keypress(function (e) { 
     if (e.which == 13) { 
      javascript: __doPostBack('LinkButton1', '') 
     } 
    });