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;
展开
 我来答
okmengzhilin
推荐于2016-05-04 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:81.9万
展开全部
可能是因为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弹窗用户体验很差

flyok666
2014-12-16 · 超过17用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:40.5万
展开全部
if语句里面第一个条件为false的话就不会执行后面的语句了。
这样写就可以全部执行了。
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);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式