发布方法不提供像计划的警报?

时间:2009-08-07 21:18:39

标签: javascript post

<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 :(得分:0)

您没有从处理程序返回任何内容。您需要从处理程序返回一个值(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' />

修改

如果您对表单提交进行验证,则无论表单的提交方式如何,都将运行。您可以在表单标记中将其添加为onsubmit处理程序,就像您对按钮的单击处理程序所做的那样。如果它应该触发表单提交,那么该按钮可能应该是一个提交按钮。

注意:我的偏好是通过javascript而不是在标记中添加处理程序,但这超出了问题的范围。我也可能使用框架而不是原始的javascript,但这也在范围之外。