javascript - 如果值大于或等于指定值,则启用提交按钮
问题描述
只有当第二个文本值等于或大于第一个文本框值时,我才尝试在表单中启用提交按钮。我在发布之前检查了解决方案。我不知道我错过了什么。请帮助我解决同样的问题。
我添加了我正在更改的 JSfiddle 代码
表格代码
<form method="post" action="order.php">
First Number
<input type="text" id="total1" />
<br>
Second Number
<input type="text" id="total2" />
<br>
<input type="submit" value="Submit" disabled title="Not Relevant">
</form>
脚本
setInterval(function () {
if ($('#total1').val() >= ('#total2').val())
$(":submit").removeAttr("disabled");
else
$(":submit").attr("disabled", "disabled");
}, 1);
解决方案
不要setInterval
用于检查值。这将阻止线程执行任何其他操作,因为您基本上是在创建一个无限循环。
您只需要在提交时知道比较值。然后提交或阻止提交发生Event.preventDefault()
。
let $form = $('form');
let $total1 = $('#total1');
let $total2 = $('#total2');
$form.on('submit', function(event) {
let val1 = Number($total1.val());
let val2 = Number($total2.val());
if (val1 < val2) { // If condition is NOT met.
event.preventDefault(); // Default submit from happening.
return false; // Stop function.
}
});
此外,当其中一个输入中的值发生更改时,您可以在表单上侦听change
事件并检查那里的值。然后根据评估在输入按钮中设置禁用属性。
let $submitButton = $(':submit');
$form.on('input', function(event) {
let val1 = Number($total1.val());
let val2 = Number($total2.val());
let isDisabled = val1 < val2; // Will return true or false.
$submitButton.prop('disabled', isDisabled);
});
如果要比较数字,请将输入类型更改为number
. 否则,您将比较字符串。
<input type="number" id="total1" />
<input type="number" id="total2" />
推荐阅读
- java - RopeProgress Bar 安卓工作室
- asp.net-core - 使用 ef core 2.2 添加控制器时出错
- intellij-idea - 从 IntelliJ gutter 运行测试时保持运行配置
- html - 尝试显示 SVG 时如何修复 403 错误?
- c++ - std::enable_if 跨编译器的不同行为(取决于外部类模板参数)
- javascript - 如何使用 try 和 catch 来捕获多个函数的错误?
- c# - C# tcp 流量重路由
- sql - 根据列值联合两个具有不同日期的表?
- c# - ASP.NET Web Api > 发生验证错误时停止操作
- database - 如何指定从 BaseX 控制台查询哪个数据库?