Эта проблема становится более сложной, когда вы даете пользователю 2 возможности отправить форму:
В таком случае вам понадобится функция, которая обнаруживает нажатую клавишу, в которой вы отправите форму, если была нажата клавиша Enter.
И теперь возникает проблема с IE (в любом случае версия 11) Примечание. Эта проблема не существует с Chrome и с FireFox!
Несмотря на то, что решение выглядит тривиально, для решения этой проблемы потребовалось много часов, поэтому я надеюсь, что это может быть полезно для других людей. Это решение было успешно проверено, в частности, на IE (v 11.0.9600.18426), FF (v 40.03) & amp; Chrome (v 53.02785.143 m 64 бит)
Исходный код HTML & amp; js находятся в фрагменте. Там описан принцип. Предупреждение:
Вы не можете протестировать его в фрагменте, потому что пост-действие не определено и нажатие клавиши Enter может вмешиваться в stackoverflow.
blockquote>Если вы столкнулся с этой проблемой, а затем просто скопировал / вставил js-код в вашу среду и адаптировал его к вашему контексту.
/* * inForm points to the form */ var inForm = document.getElementById('idGetUserFrm'); /* * IE submits the form twice * To avoid this the boolean isSumbitted is: * 1) initialized to false when the form is displayed 4 the first time * Remark: it is not the same event as "body load" */ var isSumbitted = false; function checkEnter(e) { if (e && e.keyCode == 13) { inForm.submit(); /* * 2) set to true after the form submission was invoked */ isSumbitted = true; } } function onSubmit () { if (isSumbitted) { /* * 3) reset to false after the form submission executed */ isSumbitted = false; return false; } }
<!DOCTYPE html> <html> <body> <form id="idGetUserFrm" method="post" action="servletOrSomePhp" onsubmit="return onSubmit()"> First name:<br> <input type="text" name="firstname" value="Mickey"> <input type="submit" value="Submit"> </form> </body> </html>
Попробуйте:
console.log(isNaN(123));
console.log(isNaN(1.23));
console.log(isNaN('stack'));