2012-05-02 2 views
0

У меня есть кнопка, код для которого показан ниже:Javascript, что отправить форму при нажатии кнопки ENTER

<a href="javascript:document.forms['ContactForm'].submit();" onClick="return ValidateContactForm();" class="button"><span>Submit</span</a> 

Какой код JavaScript мне нужно так, чтобы форма будет представлена, когда я нажимаю " Enter "на клавиатуре?

+0

Какая форма? Пожалуйста, включите соответствующий HTML (формы). –

+1

См http://stackoverflow.com/questions/699065/submitting-a-form -on-enter-with-jquery # 699074 –

ответ

1

Вам необходимо использовать событие onkeypress. В зависимости от того, где вы хотите, фокус, чтобы быть во время прослушивания для Enter нажатием клавиши ..

document.onkeypress = function keypressed(e){ 
    var keyCode = (window.event) ? e.which : e.keyCode; 
    if (keyCode == 13) { 
    if(ValidateContactForm()) 
     document.forms['ContactForm'].submit(); 
    }  
} 

(обновляется для IE в JavaScript KeyCode Values are "undefined" in Internet Explorer 8)

+0

Нужно ли добавить кнопку onkeypress к кнопке - или просто просто разместить это в разделе главы страницы, и он будет работать? – user1325927

+0

Нет, вам не нужно надевать Кнопка. e code выше присоединяет событие к документу в целом. вы действительно можете положить это anyhwere (в теге скрипта), и он должен работать. –

+0

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

1

Просто любопытно, почему вы не используете <input type="submit" /> элемент? Этот элемент HTML автоматически отправляет форму, в которую он вложен, когда нажата кнопка «Return» без необходимости использования JavaScript. Вы также можете нарисовать его в своем сердце с помощью CSS, как и любой другой элемент.

0

Re: Предложение ltiong_sh Вышеупомянутое не работает с Internet Explorer, по крайней мере IE8 и ниже.
Для IE8 и ниже, следующие будут работать:

document.onkeypress = function keypressed(){ 
    if (window.event.keyCode == 13) { 
    // Sumbit code 
    }  
} 

Однако, это не то, что важно. Важно отметить, что этот метод очень плохой:
1) Каждое нажатие клавиши отслеживается, когда вы находитесь в пределах области ввода или всякий раз, когда вы находитесь на странице (в зависимости от используемого метода)! (Это может украсть процессорное время)
2) Новая страница выдается при нажатии Enter (или другой горячей клавиши) с тем же URL-адресом! То есть, страница ставится в историю каждый раз, когда нажата клавиша «Ввод»!
3) Текст в области ввода восстанавливается по умолчанию (оригинал) после нажатия Enter! 4) Представленный текст добавляется к URL-адресу в адресной области, как?

Я не нашел какой-либо способ до сих пор, чтобы преодолеть эти недостатки ... (Это первый раз сегодня, что я ищу, как нажать Enter, чтобы представить текст (в качестве альтернативы нажатия кнопки).

есть ли кто-то там, чтобы предложить более эффективный метод?

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