提问人:Eliot 提问时间:9/12/2023 最后编辑:Eliot 更新时间:9/12/2023 访问量:47
如果语句检查两个输入,则选中一个复选框,并且输入的值在最大长度 [closed]
If statement checking two inputs, a checkbox is checked and the value of an input in max length [closed]
问:
我在 html 和 JavaScript 中有两个输入,我正在尝试编写一个函数来检查两个输入以显示按钮。用户需要输入 7 个文本并选中该框才能显示按钮。
$(document).on("input", "#activationCode", function(e) {
e.preventDefault();
//Only enable button if the activation code is 7 characters
let checkbox = document.getElementById("checkbox");
if ($(this).val().length == 7 && checkbox.checked) {
$('.kit-activation-button').attr('disabled', false);
} else {
$('.kit-activation-button').attr('disabled', true);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="activationCode" name="code" class="form-control required" required aria-required="true" maxlength="7">
<input type="checkbox" id="checkbox" />
<button type="submit" class=" btn btn-primary" id="Button" disabled>submit</button>
我试过了这个,但是当您输入 7 个字符并选中该框时,我仍然无法让禁用属性消失。
答:
1赞
Barmar
9/12/2023
#1
id="checkbox"
应该是 ,并且应该是 。id="activation-pwn-check"
id="Button"
id="kit-activation-button"
将启用提交按钮的代码移动到其自己的函数中。然后,您可以从文本输入和复选框的事件处理程序中调用它。
function enableDisableSubmit() {
let checkbox = $("#activation-pwn-check");
let textfield = $("#activationCode");
$('#kit-activation-button').attr('disabled', !(checkbox.prop('checked') && textfield.val().length == 7));
}
$(document).on("input", "#activationCode", enableDisableSubmit);
$(document).on("change", "#activation-pwn-check", enableDisableSubmit);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="activationCode" name="code" class="form-control required" required aria-required="true" maxlength="7">
<input type="checkbox" id="activation-pwn-check" />
<button type="submit" class=" btn btn-primary" id="kit-activation-button" disabled>submit</button>
评论
0赞
Eliot
9/12/2023
这奏效了,非常感谢!
0赞
Zak
9/12/2023
#2
您没有在元素上命名您的类,因此您没有调用任何东西。此外,您没有在激活时检查复选框的状态(选中未选中).kit-activation-button
你可以通过为冗余代码创建一个函数来简化这一点,但我觉得长手是显示缺点的更好解释。
$(document).on("input", "#activationCode", function(e) {
e.preventDefault();
if ($(this).val().length == 7 && $("#checkbox").is(":checked")) {
$('.kit-activation-button').attr('disabled', false);
} else {
$('.kit-activation-button').attr('disabled', true);
}
});
$(document).on('click', "#checkbox", function() {
if ($("#activationCode").val().length == 7 && $("#checkbox").is(":checked")) {
$('.kit-activation-button').attr('disabled', false);
} else {
$('.kit-activation-button').attr('disabled', true);
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="activationCode" name="code" class="form-control required" required aria-required="true" maxlength="7">
<input type="checkbox" id="checkbox" />
<button type="submit" class="kit-activation-button btn btn-primary" id="Button" disabled>submit</button>
简化版本为:
$(document).on("input", "#activationCode", function() {
checkInput();
}).on('click', "#checkbox", function() {
checkInput();
});
function checkInput(){
$('.kit-activation-button').attr('disabled',
($("#activationCode").val().length == 7
&& $("#checkbox").is(":checked")) ? false : true);
}
评论
id="activation-pwn-check"
document.getElementById("checkbox")