用于发布表单输入值的Javascript函数

用于发布表单输入值的Javascript函数,javascript,php,html,ajax,forms,Javascript,Php,Html,Ajax,Forms,我有一个管理密码更改请求的php页面,我很难调用javascript函数来检查新密码是否至少有一个特殊字符,然后再次调用同一页面,让php更新数据库的密码字段 这是我的html: 当前密码: 新密码: 重复新密码: 这是我的javascript代码: 函数检查密码(){ var pass1=document.getElementById('newPwd'); var pass2=document.getElementById('rNewPwd'); var isOk=真; var res1=

我有一个管理密码更改请求的php页面,我很难调用javascript函数来检查新密码是否至少有一个特殊字符,然后再次调用同一页面,让php更新数据库的密码字段

这是我的html:


当前密码:
新密码:
重复新密码:
这是我的javascript代码:

函数检查密码(){
var pass1=document.getElementById('newPwd');
var pass2=document.getElementById('rNewPwd');
var isOk=真;
var res1=/^(?=.[-\/:-@\[-\/])([\w-\/]).+$/.test(pass1);
var res2=/^(?=.[-\/:-@\[-\/])([\w-\/]).+$/.test(pass2);
如果((res1==false)| |(res2==false)){
isOk=假;
}否则{
$.ajax({
键入:“POST”,
url:'UpdateSpwd.php',
数据:$'form'.serialize()
});
}
返回isOk;
}
单击submit按钮,它应该调用js函数,检查密码是否包含至少一个特殊字符,然后调用php进行更新,但发生的情况是,即使密码没有任何特殊字符,它也会调用php页面

我是错过了什么还是做错了什么


编辑:

在测试函数中使用密码字段时,我也没有使用jquery将.value添加到密码字段中:

var res1 = /^(?=.*[ -\/:-@\[-_])([\w -\/]).+$/.test(pass1.value);
我没有使用ajax,而是:

document.changePassword.submit();
功能测试(密码){
var regex=[
/[\W]+/,//我检查是否存在至少一个特殊字符
/[a-z]+/,//我至少检查一个小写字母
/[A-Z]+/,//我验证是否存在至少一个大写字母
/[\d]+///我验证是否至少存在一个数字
];
for(var i=0;regex[i];i++){
如果(!regex[i].test(password))返回false;
}
返回true;
}
函数Send(){
var psw1=$('#newPwd').val();
var psw2=$('#rNewPwd').val();
如果(测试(psw1)和psw1==psw2){
警报('OK!');
/*
$.ajax({
键入:“POST”,
url:'UpdateSpwd.php',
数据:$('form')。序列化()
});
*/
}else警报('错误!');
}
$(函数(){
$(#changepsw')。单击(发送);
});

当前密码:
新密码:
重复新密码:

不能解决您的问题,但它不应该是
$(“#表单”).serialize()
另一方面,我想您的正则表达式可能是错误的?您测试过了吗?不确定这是否有帮助,但请尝试添加
event.preventDefault()
在块内部,在
isOk=false之后或之前;
如果在此处检查正则表达式,则未选择任何字符,为什么要让表单提交并发出Ajax请求?