js表单验证写一个方法,两次传不同的值,只进一次方法?
只是第一次的姓名进这个方法了varmname=$("input[name='name']").val();varunit=$("input[name='unit']")....
只是第一次的姓名进这个方法了
var mname=$("input[name='name']").val();
var unit=$("input[name='unit']").val();
if(checkname(mname,"姓名")&&checksex()&&checkname(nation,"民族"){
function checkname(str,name){
if(str==""){
alert(name+"不能为空");
return false;
}
else
return true; 展开
var mname=$("input[name='name']").val();
var unit=$("input[name='unit']").val();
if(checkname(mname,"姓名")&&checksex()&&checkname(nation,"民族"){
function checkname(str,name){
if(str==""){
alert(name+"不能为空");
return false;
}
else
return true; 展开
2个回答
展开全部
可能是因为if的条件在前面就没有通过,然后就不在验证后面的了,就是说第一个checkname或者checksex返回了false,条件自然就已经不成立了,所以就不在验证后面的条件了,好像有这么个说法
追问
前边两个通过,不通过就alert框,不进第三个方法
追答
if后面少加了一个括号,然后我试着就可以了
var mname = "asdf";
var nation = "";
if (checkname(mname, "姓名")&& checkname(nation, "民族")) {
}
function checkname(str, name) {
if (str == "") {
alert(name + "不能为空");
return false;
} else
return true;
}
如果验证多的话,建议还是用form验证的插件吧,自己写的话,可能考虑的不太周全,alert弹窗用户体验很差
展开全部
if语句里面第一个条件为false的话就不会执行后面的语句了。
这样写就可以全部执行了。
if(checkname(mname,"姓名")&&checksex()&&checkname(nation,"民族")
改成
var a = checkname(mname,"姓名");
var b = checksex();
var c = checkname(nation,"民族");
if(a&&b&&c){
....
}
这样写就可以全部执行了。
if(checkname(mname,"姓名")&&checksex()&&checkname(nation,"民族")
改成
var a = checkname(mname,"姓名");
var b = checksex();
var c = checkname(nation,"民族");
if(a&&b&&c){
....
}
追问
又有一个问题是,我验证的比较多,会alert()很多框,这就不科学了,
如何两者兼顾。
还有就是前两个肯定为true,要不会出现alert框的,但是什么都不显示,不知是什么问题,他没进第三个方法,前两为true,不执行是什么情况
追答
改为用变量记录错误信息,只弹一次窗
var err = "";
function checkname(str,name){
if(str==""){
err += name+"不能为空";
}
//其他要进行检测的函数checksex等,像上面那样改写
checkname(mname,"姓名")&&checksex()&&checkname(nation,"民族");
if(err){
alert(err);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询