2013-05-06 115 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(),它会触发。