Почему мое событие отправки не перехватывается jQuery в ASP.NET? - PullRequest
1 голос
/ 02 апреля 2009

Я написал это на простой странице ASP.NET:

jQuery(document).ready(function() {
 jQuery("form").submit(function() {
   alert("kikoo");
   return false
  });
});

и когда я отправляю сообщение (нажав кнопку, ссылку, ...), я никогда не вижу окно предупреждения.

Есть ли на странице asp.net что-то, что "обходит" отправку (я думаю о методе javascript dopostback)

Может кто-нибудь сказать мне, почему?

Ответы [ 3 ]

0 голосов
/ 03 апреля 2009

Я нашел проблему.

когда я нажимаю на какую-то кнопку, они вызывают метод javascript, который выполняет form.submit. Это не перехватывается jQuery.

Я исправлю поведение своей кнопки, и она будет работать нормально.

спасибо всем за помощь.

0 голосов
/ 11 августа 2009

Наконец, я обнаружил, что метод do postback переопределяет мой обработчик (до сих пор не понимаю, почему).

Итак, вот что я сделал: 1. Я объявляю свое поведение в функции JS

function MyBehaviour()
{...}

2. тогда я сделал "классическую" привязку jQuery

jQuery(document).ready(function() {
    jQuery("form").submit(EncodeAllTxtControl);
});

3. затем в каждой форме у меня было поведение myu, но я сохранял уже объявленные

jQuery("form").each(function() {
        var oldonSubmit = this.onsubmit;
        if (typeof oldonSubmit != 'function') {
            this.onsubmit = function() {
                MyBehaviour();
                return true;
            };
        }
        else
            this.onsubmit = function() {
                MyBehaviour();
                oldonSubmit();
                return true;
            };
    });

И это похоже на работу.

0 голосов
/ 02 апреля 2009

Возможно ли, что вы не уверены в использовании функции jQuery submit () ?

Звучит так, как будто вы ожидаете, что диалоговое окно предупреждения появится при загрузке страницы, потому что вы думаете, что функция отправки фактически отправляет вашу форму. Но в зависимости от того, как вы его используете, функция submit () просто присоединяет событие к вашей форме, поэтому, когда вы на самом деле делаете его отправку, ваша функция запускается.

Чтобы фактически запустить отправку из вашего кода, вы должны использовать submit () без каких-либо аргументов, подобных этому:

$("form").submit();

Вот расширенный пример, использующий ответ Майка Си в качестве основы:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
    <script type="text/javascript">
    $(function() {
        $("form").submit(function() {
            alert("kikoo"); return false
        });
        // you could also chain this onto the end of the previous function
        $("form").submit();
    });
    </script>
</head>
<body>
    <form><input type="submit" /></form>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...