/ / regex.test () функция не дава правилен резултат - javascript, html, regex

Функцията regex.test () не дава правилен резултат - javascript, html, regex

Мисля, че мога да обясня съмнението си, като покажа кода, вместо да го разясня ::

HTML:

<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Building Web Page for Client</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="css.css">
</head>
<body>
<form>
<label for="message">Enter the banner Message: </label>
<input type="text" name="userMessage" id="message" maxlength="32"><span></span><!--Form validation help text field--><br />
<label for="zipcode">Enter the Zip Code: </label>
<input type="text" name="userZip" id="zipcode" maxlength="5"><span></span><!--Form validation help text field--><br />
</form>
<script type="text/javascript" src="javascript.js"></script>
<div id="testElement"></div>
</body>
</html>

Javascript ::

//Code block for element declarers for special function checkers
var inputList = document.getElementsByTagName("input");
var zipField = document.getElementById("zipcode");
var regexForZip = /^d{5}$/;
zipField.onblur = zipChecker;

function zipChecker(){
if(checker1 && checker2){
if(!(regexForZip.test(zipField)))
inputList[1].nextElementSibling.textContent = "You can only enter numbers";
else
inputList[1].nextElementSibling.textContent = "";
}
}

Сега HTML е доста прост, а javascript още по-прост. Сега, можете ли да погледнете checker1 и checker2 булеви? И двете са верни (Съжалявам, че не ги включваме в този код, кодът е малко голям).

Дефинирах редовен израз, който САМОсъдържат 5 цифри, нищо друго. Сега това, което правя е да се опитам да взема втория входен елемент и каквото и да влезе от потребителя, проверявам, че има само 5 цифри. По код, ако входът не съвпада с редовния израз, следващият <span> ще има текст, подсказващ потребителя, в противен случай той ще бъде празен.

ЗАБЕЛЕЖКА: В този случай входът ще бъде дълъг 5 знака.

Сега тук е проблемът: Без значение какво давам като вход, страницата ме подтиква да въвеждам само цифри, което няма смисъл. Да предположим, че въвеждам 11111. Той ми казва какво би трябвало да ми каже, ако въведох друг знак освен число.

Какъв е проблемът в това?

Отговори:

3 за отговор № 1

Изпълнявате вашата RegExp срещу ДОМ Element

if (!regexForZip.test(zipField))

Това, което може да искате да тествате, е стойност на елемента, който е a string:

if (!regexForZip.test(zipField.value))