簡體   English   中英

為什么我的charAt函數不能按我的預期工作?

[英]why do my charAt function not working as i intended to?

我正在嘗試創建一個函數來限制<input>接受的格式,當滿足格式時,它旁邊的<div>將被隱藏。 (格式為I-xxxx-xxxx,而前兩個字符為I- ,而第七個字符為另一個-

這是我的<input><div>的細分

這是我用來檢查<input>的函數,如果滿足格式,它將隱藏<div>

var referenceChecker = document.getElementById("reference_number").value;
var iChecker = referenceChecker.charAt(0);
var firstDashChecker = referenceChecker.charAt(1);
var lastDashChecker = referenceChecker.charAt(6);

function checkIfEmptyReferenceNumber(that) {
  if (that.value == "") {
    document.getElementById("ifEmptyReferenceNumberMessage").style.display = "block";
  } else {
    if (iChecker = "I" && firstDashChecker = "-" && lastDashChecker = "-") {
      document.getElementById("ifEmptyReferenceNumberMessage").style.display = "none";
    }
  }
<input id="reference_number" onchange="checkIfEmptyReferenceNumber(this)"
 class="form-control" maxlength="11" type="text" ng-required="true" 
 ng-model="reference_number" onkeyup="this.value = this.value.replace(/[^I0-9-]/g, '')" />

<div id="ifEmptyReferenceNumberMessage" style="display: block;"><span style="color: red;">Reference Number Needed!</span></div>

我很抱歉,但我無法弄清楚哪里錯了。

如何使用另一種方法? 不檢查而是執行模式:

 var input = document.querySelector("input"); input.onchange = input.oninput = input.onfocus = input.onkeydown = function(e){ let digits = input.value.replace(/\\D/g, ""); if(e && e.type === "keydown" && e.key === "Backspace"){ digits = digits.substr(0, digits.length-1); } let text = "I-" + digits.slice(0, 4).padEnd(4, "x") + "-" + digits.slice(4, 8).padEnd(4, "x"); input.value = text; input.setSelectionRange(text.indexOf("x"), text.length); } input.onchange(); 
 input:invalid { background: #FDD; } input:valid { background: #8F8; } 
 <input type="text" pattern="I-\\d{4}-\\d{4}"/> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM