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

115

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

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

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

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

BruceyBandit
источник
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" />
Nonym
источник
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);"" />
b3verelabs
источник
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" />

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

user5829707
источник
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">для подтверждения электронной почты появится

BKas Development
источник
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)
}
P.Banerjee
источник
0

Используйте maxlenght = "количество символов"

<input type="text" id="sessionNo" name="sessionNum" maxlenght="7" />
Рахул Джайн
источник
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>
Яш Патель
источник