Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript禁用表单提交,直到函数为true_Javascript_Html_Forms - Fatal编程技术网

javascript禁用表单提交,直到函数为true

javascript禁用表单提交,直到函数为true,javascript,html,forms,Javascript,Html,Forms,我有两个功能,第一个功能是检查是否选中了“条款和条件”复选框,以及是否至少选中了一个跨事件类的复选框(每个事件旁边都有一个复选框),如果两个功能条件都满足,则应启用“禁用提交”按钮,但它似乎不起作用 表单开头的代码 <form id="bookingForm" name"form1" action="#" method="get"> 检查是否满足这两个功能的代码,然后应启用按钮 if(checkCheckboxes() && goFurther()) { r

我有两个功能,第一个功能是检查是否选中了“条款和条件”复选框,以及是否至少选中了一个跨事件类的复选框(每个事件旁边都有一个复选框),如果两个功能条件都满足,则应启用“禁用提交”按钮,但它似乎不起作用

表单开头的代码

<form id="bookingForm" name"form1" action="#" method="get">
检查是否满足这两个功能的代码,然后应启用按钮

if(checkCheckboxes() && goFurther()) {
    return true;
     document.getElementById("sub1").disabled = false;
}   else {
document.getElementById("sub1").disabled = true;
    }

如果这是唯一需要做的事情,那么可以将检查while循环中函数的代码封装起来。另外,我看到在启用按钮之前返回true。这将在返回true时停止函数的执行。您希望在按钮启用后放置此返回语句。

我知道您在两个多月前问过这个问题,但如果您仍在寻找答案,最好的方法是通过附加到表单的
onchange
事件处理程序来完成

HTML

<form id="myform">
    <span>
        <input type="checkbox" id="cb1"> option 1
        <input type="checkbox" id="cb2"> option 2
        <input type="checkbox" id="cb3"> option 3
    </span>
    <div>
        <input type="checkbox" id="tnc"> I agree to the Terms & Conditions.
    </div>
    <button id="disabled" disabled>submit</button>
</form>
基本思想是将
#disabled
按钮的
disabled
属性设置为以下条件的否定:

document.getElementById("tnc").checked && conditionB
其中
条件b
等于

document.getElementById("cb1").checked || document.getElementById("cb2").checked || document.getElementById("cb3").checked;
仅当选中
#tnc
以及span中的一个输入框(
#cb1
#cb2
#cb3
)时,才会返回
true
。这意味着
.disabled
属性等于
!当满足上述要求时,为true(也称为false)


您需要在要检查的所有输入元素的
onchange
处理程序中调用该代码。此外,您可能需要在帖子中添加实际问题。我进一步建议您查看类似于
knockout.js的内容,因为它使基于此类函数的控件的启用或禁用变得非常琐碎。但是knockout.js本身并不琐碎:)您的
复选框
函数工作不正常,
if
语句将对象与数字进行比较,如果(document.querySelector(..!==null){…}
,您应该执行
。另外,
querySelector
将只返回1个元素,如果您正在搜索超过1个元素,请使用
querySelector all
。您介意演示如何更改它以使其工作吗?我是一个新的javascriptYou最肯定不想这样做。基本上就是你的建议。(注意它从不加载。)这是一个
while(true){}
循环。
<form id="myform">
    <span>
        <input type="checkbox" id="cb1"> option 1
        <input type="checkbox" id="cb2"> option 2
        <input type="checkbox" id="cb3"> option 3
    </span>
    <div>
        <input type="checkbox" id="tnc"> I agree to the Terms & Conditions.
    </div>
    <button id="disabled" disabled>submit</button>
</form>
document.getElementById("myform").onchange = function () {
    document.getElementById("disabled").disabled = 
        !(document.getElementById("tnc").checked && 
            (   document.getElementById("cb1").checked ||
                document.getElementById("cb2").checked ||
                document.getElementById("cb3").checked    ) );
}
document.getElementById("tnc").checked && conditionB
document.getElementById("cb1").checked || document.getElementById("cb2").checked || document.getElementById("cb3").checked;