亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于元素失去焦點后輸入驗證的問題

關于元素失去焦點后輸入驗證的問題

慕斯王 2023-09-21 17:07:01
我開始學習 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寫錯了。如果有人能給我提示,我將不勝感激。
查看完整描述

2 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

是由 引起的regEx.test(userText)。這應該有效:


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');

  }

}


查看完整回答
反對 回復 2023-09-21
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

刪除正則表達式中的修飾符 g,如

const regEx = /^[a-zA-Z]+$/


查看完整回答
反對 回復 2023-09-21
  • 2 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號