如何区分新加载的表单和重定向后加载的相同表单

时间:2014-06-11 08:05:54

标签: javascript html forms redirect

我有一个包含以下字段的登录表单 -

密码
退货失败
直接登录
当我点击提交时,所有字段都附加在URL中,并且它会访问JSP文件 在此之后,
场景1:如果登录成功,则会将其重定向到成功页面。这工作
场景2:如果登录失败,则会将其重定向到作为参数传递的返回失败URL值。重定向时不会给出任何响应 问题 -
1.如何区分加载新表单和重定向后加载的表单?
2.在将页面重定向到returnfailure值之前,我必须显示无效用户名和密码的警告,而不是在重新加载表单时。我该怎么办?

Below is the code -  
**HTML**  

    <form name="formlogin" method="get" onsubmit="return ValidateForm();" class="form-wrapper">
    <table>
    <tr>
        <td>
            <label class="service-lable" style="font-family:Verdana;">Username</label>
        </td>
        <td>
            <input type="email" name="username" maxlength="30" size="30" class="required"/> <br/><br/>
       </td>
    </tr>
    <tr>
        <td>
            <label class="service-lable" style="font-family:Verdana;">Password</label>
        </td>
        <td>
            <input type="password" name="password"maxlength="30" size="30" class="required"/> <br/><br/>
        </td>
    </tr>
    <tr>
        <td>
            <input type="hidden" name="directlogin" id="directlogin" value="1"/>
        </td>
        <td>
            <input type="hidden" name="returnfailure" id="returnfailure" value="http://www.google.com"/>
        </td>
    </tr>
    <tr>
        <td>
            <input type="submit"  name="login" value="" class="button_add" />
        </td>
    </tr>
    </table>
    </form>

**Javascript**  

        <script>
            function emailcheck(str) {
                var at="@";
                var dot=".";
                var lat=str.indexOf(at);
                var lstr=str.length;
                var ldot=str.indexOf(dot);


                if (lat ==-1 || lat == 0 || lat == lstr){
                    return false;
                }
                if (ldot==-1 || ldot==0 || ldot == lstr){
                    return false;
                }

                if (str.indexOf(at,(lat+1))!=-1){
                    return false;
                }

                if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
                    return false;
                }

                if (str.indexOf(dot,(lat+2))==-1){
                    return false;
                }

                if (str.indexOf(" ")!=-1){
                    return false;
                }
                return true;                    
            }

            function ValidateForm(){
                var emailID=document.forms["formlogin"].username;
                var username=document.forms["formlogin"].username.value;
                username=username.toLowerCase();
                var password=document.forms["formlogin"].password.value;



                if ((emailID.value==null)||(emailID.value == "")){
    //      alert("Please Enter your Email ID");
            emailID.focus();
            return false;
                }
                if (emailcheck(emailID.value)== true){
                    document.forms["formlogin"].action = "http://www.test.com/login.jsf";
            return true;
                } else {
                    alert ('Please enter the valid Email ID');
            return false ;

                }
            }
        </script>

1 个答案:

答案 0 :(得分:0)

TJ走在正确的轨道上。通常在这里,您希望服务器能够在页面加载时(即使是第一次)将表单内容和错误传递给客户端。如果你想完全在客户端这样做,也许你可以让表单提交取代javascript ajax请求。然后,javascript可以解释服务器响应,然后使用错误消息填充页面或重定向到成功页面。