Ограничить количество символов, разрешенных в текстовом поле ввода формы


115

Как мне ограничить или запретить пользователю вводить в текстовое поле не более пяти символов?

Ниже показано поле ввода как часть моей формы:

<input type="text" id="sessionNo" name="sessionNum" />

Он использует что-то вроде maxSize или что-то в этом роде?


16
Здесь <input type="text" maxlength="5"> живая демонстрация: jsfiddle.net/mcBbW/1
Шиме Видас

Ответы:


174

максимальная длина :

Максимальное количество символов, которое будет принято в качестве ввода. Это может быть больше, чем указано в SIZE, и в этом случае поле будет прокручиваться соответствующим образом. По умолчанию не ограничено.

<input type="text" maxlength="2" id="sessionNo" name="sessionNum" onkeypress="return isNumberKey(event)" />

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


Я нашел этот ответ полезным при ограничении на этапе ввода. Вы также можете ограничить его на этапе проверки при отправке и отображении сообщения проверки с помощью patternатрибута. См stackoverflow.com/questions/10281962/...

31

Самый простой способ сделать это:

maxlength="5"

Итак .. Добавление этого атрибута в ваш элемент управления:

<input type="text" 
    id="sessionNo" 
    name="sessionNum" 
    onkeypress="return isNumberKey(event)" 
    maxlength="5" />

8

Добавьте в заголовок следующее:

<script language="javascript" type="text/javascript">
function limitText(limitField, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    }
}
</script>

    <input type="text" id="sessionNo" name="sessionNum" onKeyDown="limitText(this,5);" 
onKeyUp="limitText(this,5);"" />

this.form.sessionNoкажется немного подозрительным. Почему не просто так this? Кроме того, limitCountи limitNumтоже кажутся неисправными / ненужными?
Джаред Фарриш

1
Исправил. Поступая таким образом, если вы хотите ограничить его определенными символами или числами, вы могли бы, но если вас это не волнует, максимальная длина будет работать нормально. Скажем, если вы хотите, чтобы значения были от 1 до 50, вы можете или все положительные числа и т. Д.
b3verelabs

this.form.sessionNoвсе еще не кажется правильным. thisв этом контексте будет указывать на input, а не document.
Джаред Фарриш

Все еще не так, это тоже не ссылается на form. thisэто все, что тебе нужно. Кроме того , технически , если вы желая ссылаться на элемент К form, это было бы по ( form/ input) name, а не id, например: document.formName.sessionNum.
Джаред Фарриш

Правильно, я набрал быстро, раньше он был завернут в форму. Но вы должны просто передать ссылку на вход в функцию, чтобы получить текущее значение поля, а затем добавить любую логику, которую вы хотите ограничить в этом поле.
b3verelabs

8

Согласно w3c , значение по умолчанию для атрибута MAXLENGTH - неограниченное число. Поэтому, если вы не укажете максимальное значение, пользователь может вырезать и вставить библию пару раз и вставить ее в вашу форму.

Даже если вы укажете для MAXLENGTH разумное число, убедитесь, что вы дважды проверили длину отправленных данных на сервере перед обработкой (используя что-то вроде php или asp), поскольку в любом случае довольно легко обойти базовое ограничение MAXLENGTH


1
@lopezdp, есть несколько способов "обойти" ограничения html / javascript. Самый простой способ проверить - открыть страницу в Chrome, «проверить элемент» и вручную изменить HTML. Более сложный способ обойти - написать сценарий, который будет публиковать данные, игнорируя любые ограничения (используя библиотеку curl или что-то подобное). Как backend-разработчик вы никогда не должны доверять проверке данных через frontend - все правила должны дублироваться на сервере. Проверка внешнего интерфейса - это просто способ сэкономить время пользователя, указывая на очевидные ошибки без запроса к серверу.
Вал

4
<input type="text" maxlength="5">

максимальное количество букв, которое может быть на входе, - 5.


4

Сделайте это проще

<input type="text" maxlength="3" />

и используйте предупреждение, чтобы показать, что было использовано максимальное количество символов.


3

Я всегда делаю это так:

$(document).ready(function(){
var maxChars = $("#sessionNum");
var max_length = maxChars.attr('maxlength');
if (max_length > 0) {
    maxChars.bind('keyup', function(e){
        length = new Number(maxChars.val().length);
        counter = max_length-length;
        $("#sessionNum_counter").text(counter);
    });
}
});

Входные данные:

<input name="sessionNum" id="sessionNum" maxlength="5" type="text">
Number of chars: <span id="sessionNum_counter">5</span>

2

Максимальная длина

Максимальное количество символов, которое будет принято в качестве ввода. Атрибут maxlength указывает максимальное количество символов, разрешенное в элементе.

Школы Maxlength W3

<form action="/action_page.php">
    Username: <input type="text" name="usrname" maxlength="5"><br>
    <input type="submit" value="Submit">
</form>

1

Вы можете использовать <input type = "text" maxlength="9"> или

<input type = "number" maxlength="9">для номеров или <input type = "email" maxlength="9">для подтверждения электронной почты появится


1
<input type="number" id="xxx" name="xxx" oninput="maxLengthCheck(this)" maxlength="10">

function maxLengthCheck(object) {
  if (object.value.length > object.maxLength)
  object.value = object.value.slice(0, object.maxLength)
}


0

Следующий код включает подсчитанный ...

var count = 1;

do {
    function count_down(obj, count){

    let element = document.getElementById('count'+ count);

    element.innerHTML = 80 - obj.value.length;

    if(80 - obj.value.length < 5){
        element.style.color = "firebrick";
    }else{
        element.style.color = "#333";
    }
}
count++;
} while (count < 20); 
.text-input {
    padding: 8px 16px;
    width: 50%;
    margin-bottom: 5px;
    margin-top: 10px;
    font-size: 20px;
    font-weight: 700;
    font-family: Raleway;
    border: 1px solid dodgerblue;
  }
<p><input placeholder="Title" id="bike-input-title" onkeyup="count_down(this, 3)" maxlength="80"  class="text-input" name="bikeTitle" ></p>
        <span id="count3" style="float: right; font-family: Raleway; font-size:20px; font-weight:600; margin-top:-5px;">80</span><br>


-1
<input type="text" name="MobileNumber" id="MobileNumber" maxlength="10" onkeypress="checkNumber(event);"  placeholder="MobileNumber">

<script>
function checkNumber(key) {
  console.log(key);
  var inputNumber = document.querySelector("#MobileNumber").value;
  if(key.key >= 0 && key.key <= 9) {
    inputNumber += key.key;
  }
  else {
    key.preventDefault();
  }
}
</script>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.