原生JS密码验证函数在jQuery绑定点击事件中失效问题咨询
为什么jQuery绑定点击事件后我的密码验证函数无法运行?
我编写了一段用于密码验证的原生JavaScript代码,但在切换到jQuery绑定点击事件时遇到了问题。以下是我的验证函数:
function validatePassword(){ var symbols = "!"; var password0 = document.getElementById("password").value; if(password0.includes(symbols)){ window.alert("sorry"); } else{ window.alert("good job!"); } }
当使用原生JS方式绑定点击事件时,代码可正常运行:
document.getElementById("register").onclick = function() { validatePassword(); };
但使用以下jQuery方式绑定点击事件时,代码无法运行:
$( document ).ready(function() { $('[data-toggle="tooltip"]').tooltip({ 'placement': 'top', }); $('#register').click(function() { ('#password').validatePassword(); }); }); }); // 这里多了一个闭合括号
请问有人能解释原因吗?
问题出在这两个关键错误上:
错误的函数调用逻辑
你在jQuery点击回调里写的('#password').validatePassword();完全不符合语法规则——validatePassword是你定义的全局普通函数,并不是jQuery对象的内置方法,也不需要绑定到#password元素上调用。你只需要像原生方式那样,直接调用validatePassword()就可以触发验证逻辑。多余的闭合括号导致语法错误
你的jQuery代码末尾多了一个额外的});,$(document).ready()只需要一对闭合的});来结束这个初始化函数。多余的括号会直接触发语法错误,导致整个jQuery代码块无法执行,打开浏览器开发者控制台(按F12)就能看到对应的报错提示。
修正后的jQuery代码:
$( document ).ready(function() { // 初始化tooltip组件 $('[data-toggle="tooltip"]').tooltip({ 'placement': 'top' }); // 绑定点击事件并调用验证函数 $('#register').click(function() { validatePassword(); }); });
另外补充一点:确保页面已经正确引入了jQuery库,Bootstrap的tooltip组件依赖jQuery和Bootstrap JS文件,如果没有正确引入,tooltip功能也会失效,但这不是验证函数无法运行的直接原因。
内容的提问来源于stack exchange,提问作者Yamen Zakhour
相关产品推荐
相关产品推荐

