2013-11-01 3 views
0

У меня проблема с JS. Моя проверка, похоже, работает, проверяя, что пользователь вводит действительное число, которое не равно нулю, но форма все еще отправляется. Я много раз задавал этот вопрос, но я не могу найти решение, которое работает для меня. Любые идеи были бы замечательными.JS validation false, form по-прежнему отправляет

Мои Javascript

function checkNotZero() 
{ 
    var theNumber = document.getElementById("theNumber").value; 
    var str = /^\+?[1-9]\d*$/.test(theNumber); 
    if (str == false) { 
     alert('You have not entered a valid number'); 
     return false; 
    } else { 
     document.getElementById('numberCheck').submit(); 
    } 
} 

Мой HTML

<form action="/next.php" method="post" id="numberCheck"> 
<input type="text" id="theNumber" value="0"> 
<button id="submitButton" OnClick="checkNotZero();">Add to Basket</button> 
</form> 
+0

если вы прокомментируете 'document.getElementById ('numberCheck'). Submit();' есть ли еще представление? – Sebas

ответ

0

Привет, для вышеуказанного требования проверки валидации формы проверки подлинности Java должно быть выполнено при отправке формы. следуйте приведенному ниже подходу, форма не будет отправлена ​​ до тех пор, пока не будет подтверждена правильность.

<html> 
<head> 
<script type="text/javascript"> 
function checkNotZero() 
{ 
var theNumber = document.getElementById("theNumber").value; 
var str = /^\+?[1-9]\d*$/.test(theNumber); 
if (str == false) { 
alert('in'); 
alert('You have not entered a valid number'); 
return false; 
} else { 
    document.getElementById('numberCheck').submit(); 
} 
} 
</script> 
</head> 
<body> 
<form action="/next.php" method="post" id="numberCheck" onsubmit="return  
checkNotZero()"> 
<input type="text" id="theNumber" value="0"> 
<button id="submitButton">Add to Basket</button> 
</form> 
</body> 
</html> 

единственное изменение <form action="/next.php" method="post" id="numberCheck"
onsubmit="return checkNotZero()">
не используйте onclick событие в кнопку отправки.

1
  • Используйте <input type="submit"> для кнопки отправки.
  • Подтвердить на отправке сообщения form, а не onclick. Формы могут передаваться другими способами, а не просто нажимать кнопку (например, нажимать «вводить» или обрабатывать код через код).
  • Предпочитает .addEventListener атрибутам для прикрепления событий к элементам. Используйте preventDefault(), чтобы предотвратить отправку формы.
+0

все это хорошо, но я все еще удивляюсь, почему код OP все еще отправляется ... – Sebas

+0

Поскольку '

+0

Я не вижу ничего связанного на этой странице, я не хорошо выглядящий? – Sebas