2012-03-05 2 views
1

У меня есть один text box и я вхожу данные о том text box, что я хочу сделать, это: если я буду вводить 4 characters и skip that text box by pressing TAB key затем один сигнал тревоги придет как "data should be more than 4 characters", а затем текст поле будет auto refreshed. Если введенные данные превышают 4 символа, тогда никаких предупреждений не будет, я пытался с помощью события onkeyup, но некоторые, где я делаю неправильно. Любая помощь пожалуйстаоповещения и автообновление текстового поля, если длина 4

+0

Что вы подразумеваете под 'auto refreshed'? – ajax333221

+0

Вы могли бы показать свой код ...? –

+0

@ ajax333221 auto refreshed означает, что текстовое поле снова будет пустым, и пользователь снова должен ввести данные в это текстовое поле. Если введенные данные превышают 4 символа, тогда все в порядке, но если данные введены 4 или меньше 4, тогда появится предупреждение, а текстовое поле станет пустым. – Tom

ответ

2

Я не знаю, что вы подразумеваете под «тогда текстовое поле будет автоматически обновлено», поэтому я собираюсь предположить, что вы хотите поместить курсор обратно в это поле. Что касается проверки длины значения при обходе, что Вы хотите .change() или .blur() события:

$("input[type=text]").change(function() { 
    if (this.value.length <= 4) { 
     alert("Please enter more than 4 characters."); 
     this.focus(); 
     return false; 
    } 
}); 

Демо: http://jsfiddle.net/XHKRh/

Событие размытия будет срабатывать каждый раз, когда фокус покидает поле; событие изменения не будет запускаться снова, если пользователь немедленно выйдет из поля снова, не меняя его. Я предпочитаю использовать изменения в сочетании с дополнительной валидацией в форме submit, так что пользователь не перестает задирать предупреждениями (хотя на самом деле я вообще не показывал бы оповещение, я бы разместил сообщение на следующей странице к полю).

+0

спасибо за ваш ответ, но я обнаружил, что после предупреждения я все еще могу перейти к следующему текстовому полю, предупреждение идет нормально, но после того, как фокус внимания должен быть сохранен в этом текстовом поле, переходя к следующему текстовому полю, я думаю, что в вашей скрипке требуется небольшое редактирование. – Tom

+0

См. мой обновленный ответ. Использование '.blur()' вместо '.change()' будет делать то, что вы хотите, но (как я сказал в своем обновлении) я предпочитаю другой подход. – nnnnnn

+0

ok давайте попробуем это – Tom

1

Как насчет на blur?

var el = $('#textbox').blur(function(e) { 
    if (el.val().length > 4) { 
     return; 
    } 

    el.focus(); 
    alert('data should be more than 4 characters'); 
}); 

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

+0

спасибо Eli за ваш ответ, хорошо, позвольте мне попробовать ваш код – Tom

0

Есть некоторые моменты, которые могли бы привести вам интересно:

  • Вы не должны полагаться только на JavaScript для проверки форм, так как пользователи могут превратить его офф и обойти проверку
  • Там является maxlength недвижимость для входов
  • Вы, вероятно, ищете onblur вместо того, чтобы ключевое действие TAB, поскольку пользователи могут изменить фокус других способов
+0

да, вы правы, я не должен полагаться только на javascript, тогда как я могу решить эту проблему с 'javascript turn off'? – Tom

+0

@ Вы можете проверить с помощью серверного языка (мой любимый PHP, но есть и многие другие). Но вы должны использовать эту дополнительную меру, когда это жизненные ситуации, когда инъекционный материал будет большой проблемой для вас. – ajax333221

+0

«Когда это жизнь или смерть»? Вы должны _адресивать проверку в своем серверном коде. – nnnnnn

Смежные вопросы