Вы ничего не возвращаете от своего обработчика. Вам нужно вернуть значение (true / false) из обработчика, особенно если вы хотите остановить значение по умолчанию. Примечание. Я бы также изменил имя метода «BadPhrase» на «GoodPhrase», чтобы оно соответствовало смыслу возвращаемого значения.
сценарий:
function isAlphanumeric(elem, helperMsg){
var alphaExp = /^[0-9a-zA-Z]+$/;
if(elem.value.match(alphaExp)){
return true;
} else {
alert(helperMsg);
elem.focus();
return false;
}
}
function isGoodPhrase(elem,helperMsg){
var badPhrase=/EPW|ESW|\s/;
if (elem.value.match(badPhrase)){
alert(helperMsg);
elem.focus();
return false;
} else {
return true;
}
}
function checkInput(id) {
return isAlphanumeric(document.getElementById(id),'Your Submission Contained Invalid Characters')
&& isGoodPhrase(document.getElementById(id), 'Please Enter A Correct Friend Code!');
}
HTML:
<input type='button' onclick="return checkInput('code');" value='Check Field' />
EDIT
Если вы выполните проверку формы отправки, она будет выполняться независимо от того, как форма отправлена. Вы можете добавить его в качестве обработчика отправки в теге формы, как вы это сделали для обработчика нажатия кнопки. Кнопка, вероятно, должна быть кнопкой отправки, если она должна вызывать отправку формы.
Примечание: я бы предпочел добавить обработчики с помощью javascript, а не в теге, но это выходит за рамки вопроса. Я бы также, вероятно, использовал фреймворк, а не raw javascript, но это также выходит за рамки.