Как вызвать две функции для одного события. один в качестве функции JavaScript другой функции на стороне сервера - PullRequest
3 голосов
/ 09 января 2010

Я хочу вызвать две функции для одного и того же события 1 на стороне клиента, а 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 ]

3 голосов
/ 09 января 2010

Это правильно. На самом деле не очень хорошая практика определять события, встроенные в HTML, но это работает. Каждая строка между "и" в onblur="" рассматривается как один длинный блок кода JavaScript, так что вы можете написать в нем что угодно, даже всю программу, если хотите.

onblur="sentence1; sentence2; sentence3;"
1 голос
/ 09 января 2010

Если вы используете веб-формы, вы хотите отправить обратно на сервер для обработки серверного события, вы можете использовать __doPostBack (this.name, '') для отправки обратно на сервер (в качестве альтернативы было упомянуто использовать событие на стороне сервера для вывода (GetClientResourceUrl, я полагаю или схожим образом), но мне нравится использовать метод __doPostBack для выполнения обратной передачи.

Если вы используете MVC, вы можете вызвать метод действия, используя $ .get или $ .post, как в $ .get ("/ Controller / Action", function (result) {}). Для веб-форм нельзя вызывать метод напрямую. Вы можете вызвать веб-сервис или метод страницы.

НТН

0 голосов
/ 09 января 2010

Самое близкое, что вы можете получить - это вызвать локальную функцию (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);
  });
});
...