如果a或b = null或无值,则…填充最后一个字段将覆盖函数

If a or b = null or no value then... Filling in last field overrides function?

本文关键字:最后一个 填充 字段 函数 覆盖 null 如果      更新时间:2023-09-26

我有这样的代码:

if(document.getElementById('UserType_2').checked) {
     if(a==null || a=="", b==null || b=="", 
        c==null || c=="", d==null || d=="",
        k==null || k=="", e==null || e=="", 
        g==null || g=="", h==null || h=="", 
        j==null || j=="", k==null || k=="") {
        document.forms["619new"]["next1"].disabled = true;
        document.forms["619new"]["next1"].style.background='#FDFDFD';
        document.forms["619new"]["next1"].style.color = 'lightgray';
        document.forms["619new"]["next1"].style.border = 'none';
        document.forms["619new"]["next1"].style.cursor = 'not-allowed';
    }
    else {
        document.forms["619new"]["next1"].disabled = false;
        document.forms["619new"]["next1"].style.background='#195dad';
        document.forms["619new"]["next1"].style.color = 'lightgray';
        document.forms["619new"]["next1"].style.border = 'none';
        document.forms["619new"]["next1"].style.cursor = 'pointer';
    }
}

表示禁用按钮,除非输入了字段。一旦输入按钮变成可点击。

这工作。然而……如果我决定首先填写最后一个字段,它会覆盖所有其他字段,并在其他字段为空时解锁按钮。

我试图找到一个解决方案,但已经卡住了。有人能帮忙吗?

您看到这种行为的原因是因为您在if语句中使用了逗号。令我惊讶的是,javascript接受它们只是很好,但操作的结果是最后一个操作数的值。为什么javascript接受if语句中的逗号?

:

将昏迷更改为||,然后尝试更改从按钮添加和删除禁用属性的方式。最后尝试使用!来否定您的陈述,因为您正在检查的内容没有考虑到undefined的情况。

if(document.getElementById('UserType_2').checked) {
    if(!a || !b || !c ||
       !d || !e || !f || !g || 
       !h || !i || !j || !k ) {
        document.forms["619new"].next1.disabled = "disabled";
        document.forms["619new"].next1.style.background='#FDFDFD';
        document.forms["619new"].next1.style.color = 'lightgray';
        document.forms["619new"].next1.style.border = 'none';
        document.forms["619new"].next1.style.cursor = 'not-allowed';
    }
    else {
        delete document.forms["619new"].next1.disabled;
        document.forms["619new"].next1.style.background='#195dad';
        document.forms["619new"].next1.style.color = 'lightgray';
        document.forms["619new"].next1.style.border = 'none';
        document.forms["619new"].next1.style.cursor = 'pointer';
    }
}

就像@Adjit说的,只是用||代替逗号。谢谢,我想我试过了,幸运的是我又试了一次!