簡體   English   中英

如何在 function 中使用此正則表達式驗證輸入?

[英]How can I validate inputs using this regex within a function?

所以我有一個正則表達式,我希望它足以匹配我的日期輸入數據。

我想在執行 getSum() function 之前驗證日期。 如果不匹配,我想用一些文本提醒用戶。

我在想我需要在 getSum function 的某處使用 If Else 語句,但我不知道該放在哪里。 如您所見,getSum function 首先循環輸入數組,然后在 a.forEach 中,從每個輸入字段中提取值。

我認為這可能是開始 if else 語句的地方,因為這是兩個輸入確定其值的點。 我只需要一種方法將這兩個值與我的正則表達式進行比較,如果它們匹配,則正常運行代碼的 rest。 如果它們不匹配,則帶有警報的 else 語句。

我不確定如何寫出來。

var sumButton = document.querySelector(".sumNumbers");
sumButton.addEventListener("click", getSum);

var dateRegEx = /(0\d{1}|1[0-2])\/([0-2]\d{1}|3[0-1])\/(19|20)\d{2}/;

function getSum() {

  let inputs = ['dateInput1', 'dateInput2'];
  let outputs = ['result1', 'result2'];

  inputs.forEach(function(input, index) {
    const inputValue = document.getElementById(input).value;
    var sum = 0;
    for (var i = 0; i < inputValue.length; i++) {
      const num = parseInt(inputValue.charAt(i));
      if (!isNaN(num)) {
        sum += num;
      }
    }
    const total = (sum - 1) % 9 + 1;
    document.getElementById(outputs[index]).textContent = "Your number is: " + total;
  });
}

<form action="">
        <div class="container">

            <div class="cell-1" id="centerElement">
                <div id="cell-1-nest-l"></div>
                <div id="cell-2-nest-l"></div>
                <div id="cell-3-nest-l"></div>
                <div id="cell-4-nest-l"><h3>your name</h3></div>
                <div id="cell-5-nest-l"></div>
                <div id="cell-6-nest-l"><input type="text" 
class="nameStyle1" id="nameInput1" ></div>

      </div>

            <div class="cell-2" id="centerElement" ><img 
src="file:///Users/Nineborn/Downloads/My%20Post%20(5).png" alt="" 
class="sumNumbers"></div>

            <div class="cell-3" id="centerElement" >
                    <div id="cell-1-nest"></div>
                    <div id="cell-2-nest"></div>
                    <div id="cell-3-nest"><h3>their name</h3></div>
                    <div id="cell-4-nest"></div>
                    <div id="cell-5-nest"><input type="text" 
class="nameStyle1" id="nameInput2"></div>
                    <div id="cell-6-nest"></div>


                    </div>

            <div class="cell-4" id="result1">
                <input type="date" class="dateStyle1 reset" 
id="dateInput1">
                    </div>

            <div class="cell-5"><input type="reset"></div>

            <div class="cell-6" id="result2"> 
                <input type="date" class="dateStyle2" id="dateInput2" 
placeholder="Their Bday">
                    </div>
            <div class="cell-7"></div>

            <div class="cell-8"></div>

            <div class="cell-9"></div>


    </div>


    </form>

if (inputValue.match(dateRegEx))放在計算總和的代碼周圍。

當您使用<input type="date">時,返回值的格式是YYYY-MM-DD ,而不是它在輸入字段中的顯示方式,它以適合區域設置的任何方式格式化。 所以你需要相應地調整正則表達式。

此外,您應該在正則表達式中有^$錨點,以便它匹配整個輸入。 否則它將在輸入中的任何位置查找模式。

 var sumButton = document.querySelector(".sumNumbers"); sumButton.addEventListener("click", getSum); var dateRegEx = /^(19|20)\d{2}-(0\d{1}|1[0-2])-([0-2]\d{1}|3[0-1])$/; function getSum() { let inputs = ['dateInput1', 'dateInput2']; let outputs = ['result1', 'result2']; inputs.forEach(function(input, index) { const inputValue = document.getElementById(input).value; if (inputValue.match(dateRegEx)) { var sum = 0; for (var i = 0; i < inputValue.length; i++) { const num = parseInt(inputValue.charAt(i)); if (;isNaN(num)) { sum += num; } } const total = (sum - 1) % 9 + 1. document.getElementById(outputs[index]):textContent = "Your number is; " + total. } else { document.getElementById(outputs[index]);textContent = "You entered an invalid date " + inputValue; } }); }
 Enter dates: <input type="date" id="dateInput1"> <input type="date" id="dateInput2"> <br> <button type="button" class="sumNumbers">Calculate sums</button> <div id="result1"></div> <div id="result2"></div>

我怎樣才能添加多個輸入到這個<div>使用 javascript function?</div><div id="text_translate"><p> 對於上下文,這是我正在開發的基於 Django 的應用程序。 我在 HTML 文檔中使用此腳本。 當按下按鈕時,它會運行以下 function。 目的是創建一個元素,然后包含幾個輸入等等。 我遇到的問題是,當我使用以下 append 語句向 div 添加一個輸入時,如果我嘗試添加另一個輸入類型(例如復選框),它會覆蓋第一個輸入(搜索)。 如何在腳本中進行 append 多個輸入? 我總共需要 3 個不同的輸入。 </p><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-js lang-js prettyprint-override"> var counter = 1; //limits amount of transactions function addElements() { if (counter &lt; 5) //only allows 4 additional transactions { let div = document.createElement('div'); div.id = 'row' + counter; document.body.appendChild(div); let input = document.createElement('input'); input.id='search'+counter; input.type = 'search'; input.placeholder = 'Search by product name' div.appendChild(input); let button = document.createElement('button'); button.id ='button'+counter; button.type = 'QRscan'; button.innerText = 'QR scan' div.appendChild(button); } counter++ if (counter &gt;= 6) { alert("You have reached the maximum transactions.") } } addElements();</pre></div></div><p></p></div>

[英]How can I add multiple inputs to this <div> using javascript function?

暫無
暫無

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

相關問題 如何使用.every() 方法驗證針對正則表達式的輸入? 如何驗證多個分組輸入? 如何使用正則表達式驗證我的文件輸入名稱? 如何使用 jQuery 驗證多選輸入和文本區域? 我怎樣才能添加多個輸入到這個<div>使用 javascript function?</div><div id="text_translate"><p> 對於上下文,這是我正在開發的基於 Django 的應用程序。 我在 HTML 文檔中使用此腳本。 當按下按鈕時,它會運行以下 function。 目的是創建一個元素,然后包含幾個輸入等等。 我遇到的問題是,當我使用以下 append 語句向 div 添加一個輸入時,如果我嘗試添加另一個輸入類型(例如復選框),它會覆蓋第一個輸入(搜索)。 如何在腳本中進行 append 多個輸入? 我總共需要 3 個不同的輸入。 </p><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-js lang-js prettyprint-override"> var counter = 1; //limits amount of transactions function addElements() { if (counter &lt; 5) //only allows 4 additional transactions { let div = document.createElement('div'); div.id = 'row' + counter; document.body.appendChild(div); let input = document.createElement('input'); input.id='search'+counter; input.type = 'search'; input.placeholder = 'Search by product name' div.appendChild(input); let button = document.createElement('button'); button.id ='button'+counter; button.type = 'QRscan'; button.innerText = 'QR scan' div.appendChild(button); } counter++ if (counter &gt;= 6) { alert("You have reached the maximum transactions.") } } addElements();</pre></div></div><p></p></div> 我如何使用 customvalidator 來驗證 2 個輸入,客戶端 如何使用此jQuery Pluggin驗證不同類型的輸入/字段? 如何使用RegEx驗證此要求 如何使用正則表達式驗證沒有I的范圍AK? 使用正則表達式驗證輸入文本時如何禁止字符串中的方括號
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM