Метод публикации Не выдает оповещения, как запланировано? - PullRequest
0 голосов
/ 08 августа 2009
<form action="" method="post">
<div align="center"><legend>Add a Code</legend>
<label for="code"></label>
<input type="text" name="code" id="code" maxlength="10" />
<input type='button' 
 onclick=
             "isAlphanumeric(document.getElementById('code'),'Your Submission Contained Invalid Characters'); 
              isBadPhrase(document.getElementById('code'), 'Please Enter A Correct Friend Code!');"     
     value='Check Field' />

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 isBadPhrase(elem,helperMsg){
var badPhrase=/EPW|ESW|\s/;
if (elem.value.match(badPhrase)){
    alert(helperMsg);
    elem.focus();
    return false;
}else{
    return true;
    }

}

Что здесь не так?

1 Ответ

0 голосов
/ 08 августа 2009

Вы ничего не возвращаете от своего обработчика. Вам нужно вернуть значение (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, но это также выходит за рамки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...