检查字长不起作用

时间:2013-08-19 17:42:17

标签: javascript html

HTML

<form name="f1" action="feedback1.php" method="Post" onSubmit="return isDataFilled();" >
    <table border="0" align="center" width="500px" style="max-width: 500px;" cellspacing="3" cellpadding="5" align="center">
        <tr align="left">
            <td width="25%">
                Enter your subject            </td>
            <td width="75%"><input type="text" name="subject" size="30" value="Your subject" onClick="if(this.value=='Your subject'){this.value=''}; this.style.backgroundColor='#CCFF99'" onBlur="if(this.value==''){this.value='Your subject'}; this.style.backgroundColor='white'"/></td>
        </tr>
        <tr align="left">
            <td>
                Enter your email<span style="color:#FF0000">*</span>            </td>
            <td>        
                <input type="text" name="email" size="30" value="example@mail.com" onClick="if(this.value=='example@mail.com'){this.value=''}; this.style.backgroundColor='#CCFF99'" onBlur="if(this.value==''){this.value='example@mail.com'}; this.style.backgroundColor='white'"/>            </td>
        </tr>
        <tr align="left">
            <td colspan="2">
                Enter your message here<span style="color:#FF0000">*</span>:            </td>
        </tr>
        <tr align="left">
            <td colspan="2">
                <textarea rows="10" cols="50" name="message" title="Your message goes here" onClick= "if(this.value=='Your message goes here'){this.value=''}; this.style.backgroundColor='#CCFF99'" onBlur="if(this.value==''){this.value='Your message goes here'}; this.style.backgroundColor='white'" >Your message goes here</textarea>            </td>
        </tr>
        <tr>
            <td colspan="" align="right">
                <input type="submit" value="Send" name="b1" title="Send your message"/>
            </td>
            <td align="center">          
                <input type="reset" value="Reset" name="reset" title="Removes your form data and fill it again"/>            </td>
        </tr>
    </table>
</form

的JavaScript

function isDataFilled()
{  
    if(document.forms['f1']['email'].value=='example@mail.com')
    {
        alert("No email address in email field!");
        return false;
    }
    if(document.forms['f1']['message'].value=='Your message goes here')
    {
        alert("No message in message field!");
        return false;
    }
    return isEmailCorrect(document.forms["f1"]["email"].value);
    return check_word_length(document.forms['f1']['message'].value, 20);
}

function isEmailCorrect(f_email)
{
    var x=f_email;
    var atpos=x.indexOf("@");
    var dotpos=x.lastIndexOf(".");
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
    {
      alert("Not a valid e-mail address");
      return false;
    }
}
function check_word_length(text, over_size)
{
    var word=0;
    var message=text;
    for(i=0;i<message.length;i++)
    {
        if(message.charAt(i)==" ")
        {
            word=0;            
        }
        else
        {
            word++;
            if(word>=over_size)
            {
                alert("Too long text entered");
                return false;
            }
        }
    }
}

函数check_word_length(text, over_size)不起作用。我很困惑,因为我认为我的代码没问题。

3 个答案:

答案 0 :(得分:4)

isDataFilled

的最后
return isEmailCorrect(document.forms["f1"]["email"].value);
return check_word_length(document.forms['f1']['message'].value, 20);

return关键字会立即退出当前函数;所以永远不会达到该代码中的第二个return

答案 1 :(得分:1)

当你return函数中的值时,它会结束该函数。那么之后的内容将不会被调用。所以在这一部分:

return isEmailCorrect(document.forms["f1"]["email"].value);
return check_word_length(document.forms['f1']['message'].value, 20);

...该函数将在isEmailCorrect调用后停止。

另外,请停止从网络上复制/粘贴代码并开始尝试使用自己的代码来了解您正在做的事情。

答案 2 :(得分:0)

我认为问题是由isDataFilled返回isEmailCorrect()返回的事实引起的。函数中的执行在那里停止,因此它永远不会调用最后一个函数