Вызывает автоматическую публикацию назад, набрав текст в TextBox без нажатия клавиши ввода - PullRequest
0 голосов
/ 06 июля 2011

Я хочу, чтобы мой asp.net TextBox вызывал автоматическую обратную передачу и активировал событие разрыва стороны при вводе текста в TextBox без нажатия клавиши ввода или табуляции, аналогично WinForms.Это возможно?Если это так, возможно ли, чтобы это произошло только после ввода определенного количества символов, таких как три или четыре?Спасибо.

Ответы [ 4 ]

2 голосов
/ 06 июля 2011

Нельзя сравнивать Windows-приложения и веб-приложения.Публикация обратно на сервер, когда пользователь вводит символ, означает, что весь HTML должен быть воссоздан из ASP.NET и отправлен обратно клиенту.Но вот пример:

aspx:

<script type="text/javascript">
   var MIN_TEXTLENGTH = 3;

   function checkPostback(ctrl) {
     if (ctrl != null && ctrl.value && ctrl.value.length >= MIN_TEXTLENGTH) {
         __doPostBack(ctrl.id, '');
     }
   }
</script>


<asp:TextBox ID="TextBox1" OnKeyUp="checkPostback(this);" AutoPostBack="true" OnTextChanged="TextChanged" runat="server"></asp:TextBox>

Codebehind:

Protected Sub TextChanged(ByVal sender As Object, ByVal e As EventArgs)
    TextBox1.Attributes.Add("onfocus", "javascript:this.value=this.value;")
    TextBox1.Focus()
End Sub
0 голосов
/ 06 июля 2011

Вы можете сделать это, используя Ajax и событие onkeypress плюс какой-то счетчик.

Таким образом, вы подключаете функцию к событию onKeyPress вашего текстового поля, которое увеличивает счетчик при каждом срабатывании, когда это число становится равным 3 или 4, вы вызываете функцию ajax, которая отправляет форму на сервер в фоновом режиме и затем снова сбросьте счетчик.

Это приведет к тому, что форма будет отправляться в фоновом режиме при каждом третьем или четвертом нажатии клавиши, которое происходит во время использования текстовой области, то есть при каждом нажатии клавиши - пробел, ввод, возврат и т. Д. ...

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

Это кажется плохой идеей, но ...

Разве у вас не было бы какого-нибудь java-скрипта, который читает нажатия клавиш, а затем инициирует сообщение, когда достигается определенный лимит символов?

Событие нажатия клавиши с Ajax или просто submit должно работать.

- Похоже, что другой плакат избил меня до удара.

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

TextChange событие TextBox станет blur событием в JavaScript. Это означает, что он может запускать запись обратно, только когда вы покидаете элемент управления (TextBox, который на стороне клиента является входом или текстовой областью) и значение изменяется. Так что без трюков это невозможно.

Однако, что касается вашей архитектуры (то, как вы хотите отправить информацию обратно на сервер), я должен сказать, что это не сработает, приятель. Почтовые спинки действительно дороги, и вы должны избегать их как можно больше. Я предлагаю использовать ajax в сочетании с событием keydown поля ввода.

...