我開始學習 javascript,我正在嘗試制作一個小項目來玩。我想驗證用戶名的輸入字段是否僅包含字母(大寫或小寫),并且當值正確時,用顏色勾勒該字段的輪廓。(我不關心設計,我關心功能,因為它的目的是為了學習)。我有這個代碼: https: //jsfiddle.net/7zcv4g1m/1/const userField = document.querySelector('#user .user');const passwordField = document.querySelector('#password .password');const regEx = /^[a-zA-Z]+$/g;function checkUser() { // userField.setAttribute('class', 'user'); let userText = userField.value.substring(0, userField.value.length); let expr = regEx.test(userText); if (expr == true && userText.length > 0) { userField.setAttribute('class', 'user test'); } else { userField.setAttribute('class', 'user'); }}userField.addEventListener("focusout", checkUser, false);我的問題是這樣的:第一次運行時,如果我單擊該元素并輸入正確的文本,當我將焦點移出該元素時,它會按預期概述輸入。問題是當我在元素中單擊返回并只需單擊元素外部的某個位置即可觸發焦點事件,而不修改文本中的任何內容。不知何故,我的正則表達式條件(代碼中的 expr 變量)被認為是 false,而不是 true,并且它將元素的輸出轉回灰色而不是綠色。如果我在退出后單擊返回,它會將輸入邊框恢復為綠色。我不明白為什么會發生這種情況以及我在哪里犯了錯誤?;蛘呶铱赡艽a寫錯了。如果有人能給我提示,我將不勝感激。
關于元素失去焦點后輸入驗證的問題
慕斯王
2023-09-21 17:07:01