проверить, является ли число числом в функции с оператором if [duplicate]

Эта проблема становится более сложной, когда вы даете пользователю 2 возможности отправить форму:

  1. , нажав на специальную кнопку
  2. , нажав клавишу Enter

В таком случае вам понадобится функция, которая обнаруживает нажатую клавишу, в которой вы отправите форму, если была нажата клавиша Enter.

И теперь возникает проблема с IE (в любом случае версия 11) Примечание. Эта проблема не существует с Chrome и с FireFox!

  • Когда вы нажимаете кнопку отправки, форма отправляется один раз; штраф.
  • Когда вы нажмете Enter, форма будет отправлена ​​дважды ... и ваш сервлет будет выполнен дважды. Если у вас нет серверной архитектуры архитектуры PRG (post redirect get), результат может быть неожиданным.

Несмотря на то, что решение выглядит тривиально, для решения этой проблемы потребовалось много часов, поэтому я надеюсь, что это может быть полезно для других людей. Это решение было успешно проверено, в частности, на IE (v 11.0.9600.18426), FF (v 40.03) & amp; Chrome (v 53.02785.143 m 64 бит)

Исходный код HTML & amp; js находятся в фрагменте. Там описан принцип. Предупреждение:

Вы не можете протестировать его в фрагменте, потому что пост-действие не определено и нажатие клавиши Enter может вмешиваться в stackoverflow.

Если вы столкнулся с этой проблемой, а затем просто скопировал / вставил 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>

1
задан gon buzaglo 16 January 2019 в 23:21
поделиться

1 ответ

Попробуйте:

console.log(isNaN(123));
console.log(isNaN(1.23));
console.log(isNaN('stack'));

0
ответ дан Manuel Espinosa 16 January 2019 в 23:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: