Javascript проверяет, является ли ввод определенной строкой

У меня есть поле ввода HTML, и мне нужен JavaScript, чтобы проверить, является ли ввод, введенный в это поле, определенной строкой. В частности, это должен быть конкретный почтовый индекс, всего 9 различных почтовых индексов, все они различны и не в числовом порядке. Как только код проверяет, является ли это конкретный почтовый индекс, он возвращает "Да", если нет, просто нет.

Я знаю, как сделать это с помощью int, как показано в приведенном ниже коде, но не уверен, как это сделать со строками. Это мой текущий код, который работает с проверкой целого числа от 1 до 10:

<input id="numb">

<button type="button" onclick="myFunction()">Submit</button>

<p id="demo"></p>

<script>
function myFunction() {
    var x, text;

    // Get the value of the input field with id="numb"
    x = document.getElementById("numb").value;

    // If x is Not a Number or less than one or greater than 10
    if (isNaN(x) || x < 1 || x > 10) {
        text = "Input not valid";
    } else {
        text = "Input OK";
    }
    document.getElementById("demo").innerHTML = text;
}
</script>

3 ответа

Решение

Я думаю, что вы обдумываете это. Вы можете просто использовать indexOf функция для проверки вашего почтового индекса.

var btn= document.getElementById("btn");
var input = document.getElementById("numb");
var output = document.getElementById("demo"); 
var formArea = document.getElementById("formArea"); 

var zips = ["11111","22222","33333","44444","55555", "e1", "e2"];

btn.addEventListener("click", function() {
    var result = null;

    // indexOf() returns -1 when the supplied value isn't present
    if(zips.indexOf(numb.value.toLowerCase()) > -1){
      result =  "yes";
      
      // Show the form by removing the hidden class
      formArea.classList.remove("hidden");
    } else {
      result = "no";
      // Hide the form by adding the hidden class
      formArea.classList.add("hidden");      
    }
    output.textContent = result;

});
#formArea{
  border:2px double grey;
  width:50%;
  box-shadow:2px 2px 0 #303030;
  height:100px;
  padding:5px;
}

.hidden { 
  display:none; 
}
<input id="numb">

<button type="button" id="btn">Submit</button>

<p id="demo"></p>

<div id="formArea" class="hidden ">
  Your form goes here
</div>

Преобразовать его в число

x = Number(document.getElementById("numb").value);

Можете ли вы использовать регулярное выражение для почтовых индексов? Обратите внимание, что это объясняет набор почтовых индексов в строковом формате, но вы можете создать регулярное выражение почтового индекса, которое может удовлетворить интересующий вас набор почтовых индексов. И, кроме того, если набор достаточно мал, вы можете вероятно, просто перечислите их в список / набор и проверьте, содержит ли набор входные данные.

<input id="numb">

<button type="button" onclick="myFunction()">Submit</button>

<p id="demo"></p>

<script>
function myFunction() {
    var x, text;

    var isValidZip = /(^\d{5}$)|(^\d{5}-\d{4}$)/;

    // Get the value of the input field with id="numb"
    x = document.getElementById("numb").value;

    // If x is Not a Number or less than one or greater than 10
    if (!isValidZip.test(x)) {
        text = "Input not valid";
    } else {
        text = "Input OK";
    }
    document.getElementById("demo").innerHTML = text;
}
</script>

Другие вопросы по тегам