第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何在 Javascript 中的文本 oninput() 上驗證 00-00-00-0000 格式

如何在 Javascript 中的文本 oninput() 上驗證 00-00-00-0000 格式

Qyouu 2021-10-21 16:59:15
代碼在這里正常工作..但根據(jù)問題,它實際上無法正常工作我想驗證 00-00-00-0000 格式的數(shù)字/字母文本..但此代碼僅在第一次填充值然后它的工作正確但在明文之后填充值驗證工作不正常。var v = "0";var v1 = "0";var v2 = "0";function myFunction() {  var x = document.getElementById("vname");  x.value = x.value.toUpperCase();  var add = "-";  var string = x.value;  var str = "";  var len = string.length;  if (len > 13) {    x.value = string.substring(0, 13);  }  if (len > 2 && v == "0") {    var str = x.value;    x.value = setCharAt(str, 2, '-');    v = "1";  }  if (len > 5 && v1 == "0") {    var str = x.value;    x.value = setCharAt(str, 5, '-');    v1 = "1";  }  if (len > 8 && v2 == "0") {    var str = x.value;    x.value = setCharAt(str, 8, '-');    v2 = "1";  }}function setCharAt(str, index, chr) {  if (index > str.length - 1) return str;  return str.substr(0, index) + chr + str.substr(index + 1);}<input type="text" oninput="myFunction()" id="vname" />
查看完整描述

1 回答

?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗 獲得超3個贊

我在這里寫了一個更通用的答案,關(guān)于對固定大小的格式化輸入使用可見掩碼。如果您接受輸入掩碼始終可見,那應(yīng)該對您有用。要使其正常工作,請將以下屬性添加到您的input:


<input placeholder="__-__-__-____" data-slots="_" data-accept="\w" size="13">

請注意,它不會將小寫字母轉(zhuǎn)換為大寫字母(我建議不要這樣做:您不希望人們認(rèn)為他們的 CAPS 鎖定鍵出現(xiàn)故障)。如果這不是您希望它的工作方式(使用掩碼或缺少大寫),這里是專門適合您的要求的代碼:


const el = document.getElementById("vname"),

    pattern = "__-__-__-____",

    prev = [1, 2, 2, 4, 5, 5, 7, 8, 8, 10, 11, 12, 13],

    accept = /\w/g,

    clean = input => {

        input = input.match(accept) || [];

        return Array.from(pattern, c =>

            input[0] === c || c == "_" ? input.shift() || c : c

        );

    },

    format = () => {

        const [i, j] = [el.selectionStart, el.selectionEnd].map(i => {

            i = clean(el.value.slice(0, i)).indexOf("_");

            return i<0? prev[prev.length-1]: back? prev[i-1] || 0: i;

        });

        let s = clean(el.value).join``.toUpperCase();

        el.value = s.slice(0, (s+"_").indexOf("_"));

        el.setSelectionRange(i, j);

        back = false;

    };

    

let back = false;

el.addEventListener("keydown", (e) => back = e.key === "Backspace");

el.addEventListener("input", format);

<input type="text" id="vname" />

就像我提到的答案一樣,這也涉及復(fù)制/粘貼(即使復(fù)制的值沒有連字符)、選擇、將光標(biāo)放在中間、刪除那里的字符等。


查看完整回答
反對 回復(fù) 2021-10-21
  • 1 回答
  • 0 關(guān)注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號