Как получить, отправляют событие с помощью jQuery в приложении ASP.NET?

Смотрите на Входная обработка в WinForm

, я отправил свое решение, которое использует события ProcessCmdKey и OnKeyPress на текстовом поле. Комментарии показывают Вам, как использовать Regex, чтобы проверить нажатие клавиши и блокировать/позволять соответственно.

28
задан Herb Caudill 5 August 2009 в 14:23
поделиться

4 ответа

Спасибо, @Ken Browning и @russau за то, что указали мне направление взлома __doPostBack. Я видел несколько разных подходов к этому:

  1. Жестко запрограммировать мою собственную версию __doPostBack и поместить ее позже на страницу, чтобы она перезаписывала стандартную.
  2. Перегрузите визуализацию на странице и вставьте мою собственный пользовательский код в существующий __doPostBack.
  3. Воспользуйтесь преимуществом функционального характера Javascript и создайте ловушку для добавления функциональности в __doPostBack.

Первые две кажутся нежелательными по нескольким причинам (например, предположим, что в будущем кому-то еще понадобится добавить свои собственные функции в __doPostBack), поэтому я выбрал №3.

Эта функция addToPostBack представляет собой вариант обычной техники pre-jQuery, которую я использовал для добавления функций в window.onload, , и она хорошо работает:

addToPostBack = function(func) {
    var old__doPostBack = __doPostBack;
    if (typeof __doPostBack != 'function') {
        __doPostBack = func;
    } else {
        __doPostBack = function(t, a) {
            if (func(t, a)) old__doPostBack(t, a);
        }
    }
};

$(document).ready(function() {
    alert("Document ready.");
    addToPostBack(function(t,a) {
        return confirm("Really?")
    });
});

Изменить: Изменен addToPostBack, чтобы

  1. он мог принимать те же аргументы, что и __doPostBack
  2. , добавляемая функция выполняется до __doPostBack
  3. добавляемая функция может возвращать false для отмены обратной передачи
34
ответ дан 28 November 2019 в 03:11
поделиться

Ага, это раздражает. Я заменяю __ doPostBack своим собственным, чтобы запускать события отправки.

Iirc,

4
ответ дан 28 November 2019 в 03:11
поделиться

Я не знаю, как это сделать с помощью jQuery, но вы можете добавить свойство OnClientClick в элемент управления ASP.NET:

<asp:linkbutton id="TestButton" text="Click me!" runat="server" OnClientClick="alert('Submit detected.');" />
1
ответ дан 28 November 2019 в 03:11
поделиться

Я добился успеха с решением с переопределением __ doPostBack () , чтобы вызвать переопределение для form.submit () (например, $ ('form: first'). submit (myHandler) ), но я думаю, что это чрезмерно спроектировано. Что касается ASP.NET 2.0, наиболее простым решением является следующее:

  1. Определите функцию javascript, которую вы хотите запускать при отправке формы, т.е.

     
    
  2. Зарегистрируйте свою функцию-обработчик в своем внутреннем коде, т.е.

     защищенное переопределение void OnLoad (EventArgs e)
    {
     base.OnLoad (e);
     ScriptManager.RegisterOnSubmitStatement (Страница, Page.GetType (), 
     «myHandlerKey», «myhandler ()»);
    }
    

Вот и все! myhandler () будет вызываться как при прямом нажатии кнопки, так и при автоматическом вызове __ doPostBack () .

14
ответ дан 28 November 2019 в 03:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: