Обмежити кількість символів, дозволених у текстовому полі для введення форми


115

Як я обмежую або обмежую користувачем лише вводити максимум п’ять символів у текстове поле?

Нижче подано поле для введення як частина моєї форми:

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

Це використовується щось подібне до maxSize чи щось подібне?


16
Тут <input type="text" maxlength="5"> демонстрація в прямому ефірі: jsfiddle.net/mcBbW/1
Šime

Відповіді:


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 або щось подібне). Як розробник бекенда, ви ніколи не повинні довіряти фронтенду перевірки даних - всі правила повинні дублюватися на сервері. Перевірка 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 вказує максимальну кількість символів, дозволених в елементі.

Максимальна довжина 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

Використовувати 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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.