慕斯王
2023-09-21 17:07:01
我開始學(xué)習(xí) javascript,我正在嘗試制作一個(gè)小項(xiàng)目來(lái)玩。我想驗(yàn)證用戶名的輸入字段是否僅包含字母(大寫或小寫),并且當(dāng)值正確時(shí),用顏色勾勒該字段的輪廓。(我不關(guān)心設(shè)計(jì),我關(guān)心功能,因?yàn)樗哪康氖菫榱藢W(xué)習(xí))。我有這個(gè)代碼: 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);我的問題是這樣的:第一次運(yùn)行時(shí),如果我單擊該元素并輸入正確的文本,當(dāng)我將焦點(diǎn)移出該元素時(shí),它會(huì)按預(yù)期概述輸入。問題是當(dāng)我在元素中單擊返回并只需單擊元素外部的某個(gè)位置即可觸發(fā)焦點(diǎn)事件,而不修改文本中的任何內(nèi)容。不知何故,我的正則表達(dá)式條件(代碼中的 expr 變量)被認(rèn)為是 false,而不是 true,并且它將元素的輸出轉(zhuǎn)回灰色而不是綠色。如果我在退出后單擊返回,它會(huì)將輸入邊框恢復(fù)為綠色。我不明白為什么會(huì)發(fā)生這種情況以及我在哪里犯了錯(cuò)誤?;蛘呶铱赡艽a寫錯(cuò)了。如果有人能給我提示,我將不勝感激。
2 回答

浮云間
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
是由 引起的regEx.test(userText)。這應(yīng)該有效:
function checkUser() {
// userField.setAttribute('class', 'user');
let userText = userField.value.substring(0, userField.value.length);
let expr = userText.match(regEx);
if (expr && userText.length > 0) {
userField.setAttribute('class', 'user test');
} else {
userField.setAttribute('class', 'user');
}
}
添加回答
舉報(bào)
0/150
提交
取消