所有输入框填充后启用提交按钮失效,是否因使用Google jQuery库?
解决「所有输入框填写完成后启用提交按钮」的问题
嘿,我来帮你搞定这个问题!先别怀疑Google的jQuery库,大概率是代码里的小细节没处理好,咱们一步步来排查:
首先,修复语法错误
你代码里的if ($(this).val() =...这里犯了个常见小错误:用了赋值运算符=,而不是比较运算符===/==!这会导致逻辑完全不对,得先改成:
if ($(this).val().trim() === '') {
另外加上trim()是为了避免用户只输入空格就被判定为“已填写”的情况。
完善完整逻辑
除了语法问题,还要注意这几个点:
- 确保DOM加载完成后再绑定事件(虽然你用了自执行函数,但用jQuery的
$(function(){...})更稳妥) - 提交按钮初始状态要设为禁用(比如给按钮加
disabled属性) - 每次输入后遍历所有输入框,只要有一个为空就保持按钮禁用,全部填完才启用
给你一个完整的可运行代码示例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello, world!</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> $(function() { // 初始禁用提交按钮 $('form button[type="submit"]').prop('disabled', true); // 监听输入框的输入事件(keyup + input 覆盖粘贴等场景) $('form > input').on('keyup input', function() { var allFilled = true; $('form > input').each(function() { // 去掉前后空格后判断是否为空 if ($.trim($(this).val()) === '') { allFilled = false; return false; // 跳出循环,不用再检查其他输入框 } }); // 根据结果启用/禁用按钮 $('form button[type="submit"]').prop('disabled', !allFilled); }); }); </script> </head> <body> <form> <input type="text" placeholder="输入1"><br> <input type="text" placeholder="输入2"><br> <input type="text" placeholder="输入3"><br> <button type="submit">提交</button> </form> </body> </html>
额外注意事项
- 如果你的输入框有不同类型(比如
select、textarea),要把它们也加入到检查范围内 - 如果输入框有动态添加的情况,要使用事件委托(比如
$(document).on('keyup input', 'form > input', function(){...}))
这样改完应该就能正常工作啦,和你用的是Google的jQuery库完全没关系~
内容的提问来源于stack exchange,提问作者Nina Tunas
相关产品推荐
相关产品推荐

