2013-05-06 147 views
1

我有一個網頁,我使用jQuery AJAX從數據庫加載數據填充下拉列表。當jQuery函數運行時,服務器事件不會觸發。jquery e.preventdefault()觸發ASP.NET按鈕服務器點擊事件不會觸發

的jQuery:

$('#Cmb_PDept').on('change', function (e) { 
        e.preventDefault(); 
        var DepartmentId = $('#Cmb_PDept :selected').val(); 
        if (DepartmentId == 0) { 
         EmpCombo.empty(); 
         textbox.val(""); 

         return; 
        } 
        $.ajax({ 
         type: "POST", 
         cache: false, 
         contentType: "application/json; charset=utf-8", 
         url: '/WebService/GetEmployeeByDepID.asmx/GetEmployee', 
         data: '{ "DepartmentId": "' + DepartmentId + '" }', 
         dataType: 'json', 
         success: function (data) { 
          var data = $.parseJSON(data.d) 
          var options = $("#Cmb_PEmp"); 
          options.empty(); 
          for (var i = 0; i < data.length ; i++) { 
           options.append("<option value='" + data[i]["EmployeeId"] + "'>" + data[i]["EmployeeName"] + "</option>"); 
          } 
          myEvent(); 
         }, 
         error: function() { alert("error"); } 
        }); 
       }); 

ASP.NET Button控制

<asp:Button ID="Btn_PIncrementSave" runat="server" Text="Save" 
      OnClick="Btn_PIncrementSave_Click" CausesValidation="false" /> 

onClick事件

protected void Btn_PIncrementSave_Click(object sender, EventArgs e) 
{ 
     try 
     { 
      TxBx_IncrementAmount.Text = Hid_BasicSalary.Value; 
     } 
     catch (Exception ex) 
     { 
      Utility.Msg_Error(this.Master, ex.Message); 
     } 
    } 

此事件不火。我認爲這是由於

e.preventDefault(); 

當我刪除這個,服務器端事件工作正常。

+2

如果你想讓它爲什麼你甚至使用e.preventdefault? – lifetimes 2013-05-06 06:41:43

+0

'e.preventDefault();'如果刪除這個工作好,那麼是什麼問題? – Jai 2013-05-06 06:42:00

+0

當jquery執行其功能服務器端事件不fire.i繞過所有的jQuery事件然後按鈕單擊fire.when我執行jQuery事件服務器envents不會觸發。 – 2013-05-06 06:44:51

回答

1

給你的ASP按鈕添加這個ClientIDMode="Static"和檢查。天氣ASP:ButtonID將在源移動到瀏覽器時更改。可能是這將是一個原因。點擊瀏覽器中的查看源,查看ID

+0

嘗試@RJK的說法,這也將解決你的問題,實際上是頁面呈現時asp.net改變客戶端的ID,所以這個問題 – 2013-05-06 06:46:43

+1

我alredy在web.confiq文件中包含cleintMode-sataic – 2013-05-06 06:48:11

+0

@AmjadShah請[閱讀本文](http://www.w3schools.com/jquery/event_preventdefault.asp) – RajeshKdev 2013-05-06 07:04:10

2

如果您使用e.PreventDefault()停止觸發服務器端事件,或者如果您在該情況下編寫return false語句,則服務器端事件不會觸發,您的答案在標題中。你從你的代碼中刪除e.PreventDefault(),它會觸發。