jquery onchange / onfocus на форме - PullRequest
0 голосов
/ 11 июня 2011

Я использую jQuery, чтобы получить эффект замены текстового поля ввода в моей форме.

Предположим, что форма имеет id = "myForm", а поле ввода текста имеет id = "myText";

$('#myText').change(function(){
    $('#myForm').submit();
});

Таким образом, моя форма отправляется, когда я меняю поле и затем щелкаю за пределами поля.

ОДНАКО, я хочу, чтобы моя форма была отправлена, когда я закончу вставлять свои данные в поле ввода, не щелкая за пределами поля ввода (теряя фокус).

Есть идеи? Это возможно? Thanx

Ответы [ 2 ]

2 голосов
/ 11 июня 2011

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

Так, например:

var timedSubmit;

$('#myText').keyup(function(e) {
    if (e.keyCode) == 13 { $("#myform").submit() }
    clearTimeout(timedSubmit);
    timedSubmit = setTimeout('$("#myform").submit()', 2000);
});

Примечание. Я также искал нажатую клавишу ввода (код клавиши 13), чтобы она просто отправляла форму при нажатии клавиши ввода.

1 голос
/ 11 июня 2011

Я не думаю, что это возможно. Вы всегда можете использовать события keyup / keydown, поэтому, когда ввод имеет определенную длину, он отправит его. Но это также не имеет смысла, потому что, если вы сделаете опечатку, вы не сможете это исправить, потому что она немедленно отправлена.

Таким образом, нельзя сказать, закончили ли вы работу с javascript или нет, кроме изменения фокуса.

Можно предложить добавить тайм-аут, но это только облегчит проблему. Потому что невозможно сказать, насколько быстро работает пользователь, или он / она прерван во время процесса отправки.

...