输入上的禁用属性使其成为 "forget" onclick 事件

disabled attribute on input makes it "forget" onclick event

我明白了JS/HTML

<div>
    Are you sure ? <input type="checkbox" id="Confirm" onClick="doCheck();"/>
</div>

<input value="3" id="SubmitT" type="button" onClick="MainFunction(34);" disabled>

已编辑:错字代码

function doCheck(){
    $("#SubmitT").prop('disabled',$("#Confirm").is(":checked"));
}

我希望它做的是 set/unset disabled 属性和 MainFunction(34) 根据是否存在 disabled 来触发。 它所做的是在我切换复选框输入后它忘记了绑定到 onclick 的事件,不断抛出关于 MainFunction 未知的错误。

jquery 的版本是 1.11.1

尝试做这样的事情:

document.getElementById('SubmitT').disabled = true;

就像您通过 js 将其设置为禁用一样。(在页面加载时执行该命令)并使用 MainFunction() 控制禁用的 属性。

既然你被标记为 jQuery,最好在 jQuery

中使用 change() 事件处理程序

$('#Confirm').change(function() {
  $("#SubmitT").prop('disabled', !this.checked);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
  Are you sure ?
  <input type="checkbox" id="Confirm"/>
</div>

<input value="3" id="SubmitT" type="button" onClick="MainFunction(34);" disabled>

您显示的代码工作正常。

您确定您的 MainFunction 没有问题吗?只需使用您的代码并添加一个 MainFunction 即可 alerts 输入工作得很好并且不会抛出任何错误,如下面的代码片段所示。

此外,您不希望在选中 'Are you sure?' 复选框时能够单击提交按钮吗?为此,我将其更改为 !$("#Confirm").is(":checked").

function doCheck() {
  $("#SubmitT").prop('disabled', !$("#Confirm").is(":checked"));
}

function MainFunction(input) {
  alert(input);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  Are you sure ?
  <input type="checkbox" id="Confirm" onClick="doCheck();" />
</div>

<input value="3" id="SubmitT" type="button" onClick="MainFunction(34);" disabled>