如何在单个事件上调用两个函数。一个作为javascript函数,另一个是服务器端函数

时间:2010-01-09 19:06:04

标签: c# asp.net javascript asp.net-ajax

我想在同一事件1上调用两个函数是客户端,另一个是服务器端。 我怎么能这样做

 <input type="text" ID="txtUserName" runat="server" maxlength="50"
                            class="DefaultTextbox" style="width:180px;" value="" 
                            onfocus="ControlOnFocus('', this, spanUserName);"
                            onblur="ControlOnBlur('',this, spanUserName); "
                            />

onblur =“ControlOnBlur(); function2();

这是对的吗?

onblur="ControlOnBlur(); function2();

3 个答案:

答案 0 :(得分:3)

多数民众赞成。实际上,定义HTML中内联的事件并不是很好的做法,但它确实有用。在onblur=""中“和”之间的每次访问被视为一个长JavaScript代码块,因此您可以在其中编写任何内容,甚至是您希望的整个程序。

onblur="sentence1; sentence2; sentence3;"

答案 1 :(得分:1)

如果使用Web表单,您希望回发到服务器以处理服务器端事件,您可以使用__doPostBack(this.name,'')发回服务器(或者提到您可以使用服务器端事件输出(我相信或命名的GetClientResourceUrl),但我喜欢使用__doPostBack方法来执行回发。

如果使用MVC,则可以使用$ .get或$ .post调用操作方法,如$ .get(“/ Controller / Action”,function(result){})。对于Web表单,您无法直接调用方法。您可以调用Web服务或页面方法。

HTH

答案 2 :(得分:0)

最接近的是调用本地函数(javascript),然后通过异步调用(Ajax)向服务器发出请求。但是,您无法直接从客户端调用服务器上的方法。

使用jQuery,它看起来像这样:

$("#txtUserName").blur(function(e){
  ControlOnBlur(); // call first function
  $.post("/methods", {methodName:"refreshData", function(results){
    /* results represents that which was returned from the server */
    alert(results);
  });
});