我有一个页面上的登录表单(Home.html),它接受电子邮件ID和密码。它使用javascript验证并重定向到另一个页面(Login.html)。
function redirect() {
var email = $('#email').val();
var password = $('#password').val();
if(email=='user@gmail.com' && password=='user')
window.location = 'Login.html';
else
alert("Wrong credentials");
}
<form onsubmit='redirect()' method='post'>如果输入了错误的凭据,则会按预期显示警报框,但当输入正确的凭据时,则将Home.html重新加载到Login.html。
我尝试过将window.location更改为window.location.href,但这并没有帮助。
如果不使用form标记,并且在按钮标记中使用onclick调用重定向()函数,它就能正常工作。
发布于 2016-02-21 19:23:36
提交表单将导致加载新页。这将取消JS从提交事件执行的任何location分配。
由于您没有action属性,所以加载的新页面与现有页具有相同的URL。
您需要取消submit事件的默认行为(即表单提交)。快速和肮脏的方法是从submit事件处理程序函数中返回false:
<form onsubmit='redirect(); return false;' method='post'>现代代码将事件处理程序与JavaScript绑定,而不是首先使用内部事件处理程序:
<form method='post'>和
function redirect(event) {
var email = $('#email').val();
var password = $('#password').val();
if(email=='user@gmail.com' && password=='user')
window.location = 'Login.html';
else
alert("Wrong credentials");
event.preventDefault();
}
document.querySelector("form").addEventListener("submit", redirect);健壮的代码将被编写为不引人注意,这样如果JavaScript失败 (哪个它会的),则表单将以正常方式提交,而服务器端代码则将执行活动。
除此之外,用户重定向到的用户名、密码和不安全的URL在页面的源代码中都是可见的,因此您确实需要在服务器上并且只在服务器上这样做。
发布于 2016-02-21 19:23:07
<form onsubmit='redirect();return false;' method='post'>
发布于 2016-02-21 19:23:35
如果您从重定向方法中return false,则不会提交表单,发生错误时请尝试return false。
function redirect() {
var email = $('#email').val();
var password = $('#password').val();
if(email=='user@gmail.com' && password=='user')
window.location = 'Login.html';
else
{
alert("Wrong credentials");
return false;
}
}并将形式改为
<form onsubmit='return redirect()' method='post'>https://stackoverflow.com/questions/35540807
复制相似问题