[英]Redirect to another page using javascript after another function finishes
[英]Page resets after javascript function finishes
我正在为一个项目做一个简单的HTML页面。 我有一个提交表单。我使用jquery对其进行验证(不确定我是否做对了)。 提交经过验证后,我想将用户的详细信息(名称,密码)保存在一个数组中。 脚本加载时创建数组。
我将函数SubmitUser()添加到onclick事件中,但是当函数完成并添加用户时,页面将重置,并且变量将重置。
我想知道是否有人可以向我指出我做错了什么。
预先感谢,鲍里斯
这是脚本代码:
var userArray = new Array();
var passArray = new Array();
var userNumber = 0;
//Adding rules for validation
$(document).ready(function(){
$("#registerForm").validate({
rules: {
password: {
required: true,
minlength: 8
}
}
});
});
//Add a method to validate
$(document).ready(function(){
$.validator.addMethod("username", function(value, element) {
return this.optional(element) || /^[a-zA-Z]+$/i.test(value);
}, "Field must contain only letters");
});
//The function in question
function SubmitUser()
{
if($("#registerForm").valid())
{
var user = document.getElementById('username');
userArray[userNumber] = user;
userNumber++;
alert('Registered');
}
//Function to switch between the different pages in the menu.
function toggle(id) {
if(id=='LoginPage')
{
document.getElementById(id).style.display = 'block';
document.getElementById('WelcomePage').style.display = 'none';
document.getElementById('RegisterPage').style.display = 'none';
document.getElementById('GamePage').style.display = 'none';
}
if(id=='WelcomePage')
{
document.getElementById(id).style.display = 'block';
document.getElementById('LoginPage').style.display = 'none';
document.getElementById('RegisterPage').style.display = 'none';
document.getElementById('GamePage').style.display = 'none';
}
if(id=='RegisterPage')
{
document.getElementById(id).style.display = 'block';
document.getElementById('WelcomePage').style.display = 'none';
document.getElementById('LoginPage').style.display = 'none';
document.getElementById('GamePage').style.display = 'none';
}
if(id=='GamePage')
{
document.getElementById(id).style.display = 'block';
document.getElementById('WelcomePage').style.display = 'none';
document.getElementById('RegisterPage').style.display = 'none';
document.getElementById('LoginPage').style.display = 'none';
}
return false;
}
如果您要覆盖表单的自然提交行为,则可以执行以下操作:
$(document).ready( function(){
$('#registerForm').submit( function(e){
e.preventDefault(); // suppress natural submit behavior
submitUser(); // your function
});
});
并且由于您已经在使用jQuery,因此可以大大简化切换代码。 对于每个这样的块:
if(id=='WelcomePage')
{
document.getElementById(id).style.display = 'block';
document.getElementById('LoginPage').style.display = 'none';
document.getElementById('RegisterPage').style.display = 'none';
document.getElementById('GamePage').style.display = 'none';
}
...您可以改为执行以下操作:
if( id === 'WelcomePage' ){
$('#'+id).show();
$('#LoginPage, #RegisterPage, #GamePage').hide();
}
或更笼统地说,只需一行即可处理所有切换案例:
function toggle(id){
$('#LoginPage, #RegisterPage, #GamePage, #WelcomePage')
.hide()
.filter('#'+id).show();
}
您可以尝试将其添加到onclick事件中(在“提交”按钮上):
onclick="javascript:return SubmitFunction();"
或在表单标签中(对于正常的提交按钮):
onSubmit="javascript:return SubmitFunction();"
确保函数返回的是真或假。 如果返回false,则页面不会重置/刷新。
当页面刷新或更改时,将重置JavaScript变量...这就是不幸的事实。 确保表单所在的函数返回false,以阻止其更改页面-因此SubmitUser()的外观应为:
function SubmitUser()
{
if($("#registerForm").valid())
{
var user = document.getElementById('username');
userArray[userNumber] = user;
userNumber++;
alert('Registered');
}
return false;
}
现在,要更改页面,请考虑使用jQuery.html( Link )加载内容而无需实际更改页面(或jQuery.load( Link )加载实际文件,例如games.html):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.