在重定向到新页面之前无法显示错误消息

时间:2014-06-11 06:59:06

标签: javascript html5

我正在尝试在从隐藏字段重定向页面之前显示错误消息。我没有成功做到这一点。 以下是代码 -
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

登录成功后,该页面会重定向到另一个正常工作

的网站
  • 情景2

如果登录失败,则应重定向到提及returnfailure值的页面。 这有效,但我无法在重定向之前显示错误消息。我怎么能用隐藏的字段做到这一点。

2 个答案:

答案 0 :(得分:0)

更新以下代码

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');
            window.location.href = document.getElementById("returnfailure").value;

        }
    }

答案 1 :(得分:0)

登录成功或失败似乎由“http://www.test.com/login.jsf”决定。 处理重定向的逻辑必须在该文件中。

所以你可以做的是:

  1. 如果登录失败 - &gt;重定向到登录表单页面(上面提到的页面),其中包含一个额外的请求参数,说明登录失败。 (此代码应位于“http://www.test.com/login.jsf”)

  2. 在“登录”页面中使用该请求参数值,以显示或隐藏错误消息。

  3. 如果您显示错误,请重定向到“returnfailure”隐藏字段中提到的页面