Добавление события нажатия jQuery на кнопку asp:, которая срабатывает до того, как кнопка выполняет обратную передачу - PullRequest
4 голосов
/ 28 июля 2011

У меня есть приложение asp.net с кнопкой asp:, которая вызывает обратную передачу, это означает, что html для ввода имеет атрибут onclick, который автоматически генерируется, мне нужно добавить событие через jQuery в атрибут onclick, которыйсрабатывает до запуска автоматически сгенерированной обратной передачи.

Ниже приведен пример сгенерированного html, мне нужно убедиться, что мое событие, добавленное с помощью jQuery, сработает перед функцией WebForm_DoPostBackWithOptions ().

<input id="ctl00_MainContent_Save" type="submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$Save", "", true, "", "", false, false))" value="" name="ctl00$MainContent$Save">

для большей ясности я знаю, что могу добавить событие через jQuery следующим образом:

$('#ctl00_MainContent_Save').click(function() {
    somfunction();
});

, но я хочу, чтобы мое событие сработало до WebForm_DoPostBackWithOptions

Ответы [ 3 ]

4 голосов
/ 28 июля 2011

Вероятно, вы можете попробовать событие mousedown, которое будет запущено до того, как будет запущено событие click.

$('#ctl00_MainContent_Save').mousedown(function() {
    somfunction();
});

или попробуйте следующий код

$(document).ready(function(){

  $('#ctl00_MainContent_Save')
  .attr("onclick", null)
  .removeAttr("onclick")
  .click(function() {
        somfunction();
        WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions($(this).attr("name"), "", true, "", "", false, false));
    });

});
2 голосов
/ 28 июля 2011

Надеюсь, это даст вам представление о том, как это сделать.

<asp:Button ID="bsrc" runat="server" Text="Search" OnClick="bsrc_Click" />


<script type="text/javascript" language="javascript">
     $(document).ready(function()
     {
         $('#<%= bsrc.ClientID %>').click(function(e) 
         {              
                return true;
         });
     });
</script>

Когда вы сначала нажмете кнопку, она вызовет функцию javascript, а затем перейдет на сторону сервера. Если вы хотите прекратить вызывать событие на стороне сервера из кода JavaScript, просто return false; вместо return true;

0 голосов
/ 28 июля 2011

Как насчет:

<input id="ctl00_MainContent_Save" type="submit" value="" 
   name="ctl00$MainContent$Save">
...


$('#ctl00_MainContent_Save').click(function(e) {
   e.preventDefault();
   somfunction();
   WebForm_DoPostBackWithOptions(
       new WebForm_PostBackOptions("ctl00$MainContent$Save",
        "", true, "", "", false, false))"
 });

Если вы не можете изменить HTML, вы можете попробовать (предупреждение: не проверено!)

var $link = $('#ctl00_MainContent_Save');
var oldFunction = $link[0].onClick;
$link[0].onClick = null
$link.click(function(e) {
   e.preventDefault();
   somfunction();
   oldFunction();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...