Я хочу запретить пользователям вводить номер, заканчивающийся на 5 - PullRequest
0 голосов
/ 20 ноября 2018

Вот текстовое поле. Я хочу, чтобы пользователи вводили только значения, например, 210,220,230, ... и не позволяли вводить что-то вроде 215,225, ...

Я ищу предложения.Я не очень разбираюсь в javascript.

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

function testInput() {
    var key = window.event.keyCode;
    var x = document.getElementById('textarea').value
    var y = document.getElementById('textarea2').value
    var z = parseInt(x, 10);
    if (z+10 == y) {
       document.getElementById('result').innerHTML = "valid";
       } else {
       document.getElementById('result').innerHTML = "invalid";
       }
}
<textarea maxlength="3" id="textarea">5</textarea>
<textarea maxlength="3" id="textarea2">15</textarea>
<button onclick="testInput()">Test Input</button>
<div id="result"></div>

Первый вход - это ваш первый номер, второй - ваш второй номер. См. Комментарии, если вам интересно, почему это не отвечает на его вопрос О.Г.

0 голосов
/ 20 ноября 2018

Вы можете поэкспериментировать с setCustomValidity() из input элементов (https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement) из обработчика onblur, onchange или oninput. Если вы не удовлетворены значением, установите ошибкусообщение и пустая строка в противном случае. Если для сообщения об ошибке задано непустое значение, оно отображается и форма отказывается отправлять:

function check5() {
  cgiftcardq.setCustomValidity(cgiftcardq.value.endsWith('5')?"Nope, it can not end with 5":"");
}
<form>
  <input name="cgiftcardq" class="text_field" id="cgiftcardq" size="3" autocomplete="off" type="text" onblur="check5()">
  <input type="submit" value="Send">
</form>

(Фрагменты StackOverflow мешают отправке формы - вероятно, как часть безопасности - поэтому успешная отправка просто приводит к исчезновению формы)


Поскольку setCustomValidity() не работает везде (согласно таблице совместимости , он не будет работать на мобильных телефонах, отличных от Andorid), можно упомянуть и классическое «бюджетное» решение: вы можете просто отключить кнопку отправкиесли вы не удовлетворены вводом:

function check5() {
  if(cgiftcardq.value.endsWith('5')){
    send.disabled=true;
    message.innerHTML="Nope, it can not end with 5";
  } else {
    send.disabled=false;
    message.innerHTML="OK";
  }
}
<form>
  <input name="cgiftcardq" class="text_field" id="cgiftcardq" size="3" autocomplete="off" type="text" oninput="check5()">
  <input id="send" type="submit" value="Send" disabled>
</form>
<div id="message"></div>
0 голосов
/ 20 ноября 2018

Если вы просто хотите запретить строки, заканчивающиеся на '5':

 document.getElementById("input").onblur = checkEND;

    function checkEND() {
      let firstValue = event.currentTarget.value;
      if(firstValue.endsWith('5')){
       warnUser()
      }
    }

Это не подтвердит, что строка является действительным числом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...