JavaScript onfocusout遇Uncaught TypeError及输入验证问题求助
问题分析与修复方案
问题1:输入合法值仍弹出错误提示
原因:条件判断逻辑错误,用了||(或)而非&&(与)。当输入DEALER时,sourcDealerId.value != "MARKET"为真,整个条件成立触发错误;输入MARKET同理。正确逻辑应为既不是DEALER也不是MARKET时才报错。
问题2&3:焦点未返回且控制台报错Uncaught TypeError: sourcDealerId.focus is not a function
原因:错误地将DOM元素变量sourcDealerId赋值为空字符串sourcDealerId = "",导致变量不再指向文本框节点,变成普通字符串后无法调用focus()方法。正确清空输入框的方式是设置value属性为空,而非覆盖变量本身。
修正后的完整代码
JavaScript代码
function onloadfunction() { alert("On Load!"); var sourcDealerId = document.getElementById("dsatext"); sourcDealerId.focus(); } function getFocusBack() { var sourcDealerId = document.getElementById("dsatext"); // 修正条件判断逻辑,用&&替代|| if (sourcDealerId.value !== "DEALER" && sourcDealerId.value !== "MARKET") { alert("Text Box Values::" + sourcDealerId.value); alert("Valid Values are DEALER OR MARKET only"); // 清空输入框的value,而非覆盖DOM元素变量 sourcDealerId.value = ""; sourcDealerId.focus(); } }
HTML代码
<input type="text" id="dsatext" onfocusout="getFocusBack()" /> <input type="text" id="othertext" />
内容的提问来源于stack exchange,提问作者Wasim Wani
相关产品推荐
相关产品推荐

