maxlength
Атрибут не працює з <input type="number">
. Це відбувається лише в Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
maxlength
Атрибут не працює з <input type="number">
. Це відбувається лише в Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
Відповіді:
Якщо значення типу атрибута
text
,search
,password
,tel
, абоurl
, цей атрибут визначає максимальну кількість символів (в точках коду Unicode) , які користувач може ввести; для інших типів управління ігнорується.
Так дизайн maxlength
ігнорується <input type="number">
.
В залежності від ваших потреб, ви можете використовувати min
і max
атрибути , як Інонія запропонував в його / її відповідь (NB: це буде визначити тільки обмежений діапазон, а не фактичне довжину символу значення, хоча -9999 до +9999 буде охоплювати всі 0-4 цифри чисел), або ви можете використовувати звичайне введення тексту та застосувати перевірку на полі за допомогою нового pattern
атрибута:
<input type="text" pattern="\d*" maxlength="4">
type=number
введення шляхом встановлення max
атрибута. Цей атрибут обмежує лише число, вибране спінером введення.
\d*
тут?
regex
та малюнок - неймовірно креативний. Але в мобільному не відрізняється Android
або iOS
, це text
вхід, тому це може призвести до поганого UX
.
Максимальна довжина не працюватиме <input type="number"
найкращим чином, як я знаю, це використовувати oninput
подію для обмеження максимальної довжини . Будь ласка, дивіться наведений нижче код.
<input name="somename"
oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
type = "number"
maxlength = "6"
/>
||0/1
oninput="this.value=this.value.slice(0,this.maxLength)"
має працювати
<input type="number">
stackoverflow.com/questions/18510845 / ...
Багато хлопців опублікували onKeyDown()
подію, яка взагалі не працює, тобто ви не можете видалити, як тільки досягнете ліміту. Тож замість onKeyDown()
використання onKeyPress()
він працює чудово.
Нижче працює код:
User will not be allowed to enter more than 4 digits
<br>
<input type="number" pattern="/^-?\d+\.?\d*$/" onKeyPress="if(this.value.length==4) return false;" />
number
тип введення html5
У мене є два способи зробити це
По-перше: використовуйте type="tel"
, воно буде працювати як type="number"
у мобільному телефоні, і приймайте максимальну довжину:
<input type="tel" />
Друге: Використовуйте трохи JavaScript:
<!-- maxlength="2" -->
<input type="tel" onKeyDown="if(this.value.length==2 && event.keyCode!=8) return false;" />
Ви можете використовувати атрибути min та max .
Наступний код робить те саме:
<input type="number" min="-999" max="9999"/>
9999
користувач може ввести вручну в кількості, що перевищує цю довжину.
Змініть тип введення тексту та використовуйте подію "oninput" для виклику функції:
<input type="text" oninput="numberOnly(this.id);" class="test_css" maxlength="4" id="flight_number" name="number"/>
Тепер використовуйте Jage Regex для фільтрування введення користувача та обмеження його лише на числа:
function numberOnly(id) {
// Get element by id which passed as parameter within HTML element event
var element = document.getElementById(id);
// Use numbers only pattern, from 0 to 9
var regex = /[^0-9]/gi;
// This removes any other character but numbers as entered by user
element.value = element.value.replace(regex, "");
}
Демонстраційний: https://codepen.io/aslami/pen/GdPvRY
Я одного разу потрапив у ту саму проблему і знайшов це рішення з урахуванням моїх потреб. Можливо, комусь це допоможе.
<input type="number" placeholder="Enter 4 Digits" max="9999" min="0"
onKeyDown="if(this.value.length==4 && event.keyCode>47 && event.keyCode < 58)return false;"
/>
Щасливе кодування :)
<input type="number" oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" onKeyDown="if(this.value.length==10 && event.keyCode!=8) return false;">
DEMO - JSFIDDLE
Ось моє рішення з jQuery ... Ви повинні додати максимальну довжину до вашого типу вводу = число
$('body').on('keypress', 'input[type=number][maxlength]', function(event){
var key = event.keyCode || event.charCode;
var charcodestring = String.fromCharCode(event.which);
var txtVal = $(this).val();
var maxlength = $(this).attr('maxlength');
var regex = new RegExp('^[0-9]+$');
// 8 = backspace 46 = Del 13 = Enter 39 = Left 37 = right Tab = 9
if( key == 8 || key == 46 || key == 13 || key == 37 || key == 39 || key == 9 ){
return true;
}
// maxlength allready reached
if(txtVal.length==maxlength){
event.preventDefault();
return false;
}
// pressed key have to be a number
if( !regex.test(charcodestring) ){
event.preventDefault();
return false;
}
return true;
});
І обробити копію та вставити:
$('body').on('paste', 'input[type=number][maxlength]', function(event) {
//catch copy and paste
var ref = $(this);
var regex = new RegExp('^[0-9]+$');
var maxlength = ref.attr('maxlength');
var clipboardData = event.originalEvent.clipboardData.getData('text');
var txtVal = ref.val();//current value
var filteredString = '';
var combined_input = txtVal + clipboardData;//dont forget old data
for (var i = 0; i < combined_input.length; i++) {
if( filteredString.length < maxlength ){
if( regex.test(combined_input[i]) ){
filteredString += combined_input[i];
}
}
}
setTimeout(function(){
ref.val('').val(filteredString)
},100);
});
Я сподіваюся, що це комусь допоможе.
this.value = this.value.slice(0, this.maxLength);
чи вважаєте ви, що це має якесь питання? Я поки не знайшов жодного. Він охоплює також вставлений текст.
На мій досвід більшість питань, де люди запитують, чому maxlength
це ігнорується, це тому, що користувачеві дозволено вводити більше, ніж "дозволену" кількість символів.
Як зазначалося в інших коментарях, type="number"
вхідні дані не мають maxlength
атрибуту, а натомість мають a min
іmax
атрибут.
Щоб поле обмежило кількість символів, які можна вставити, дозволяючи користувачеві знати про це до подання форми (браузер повинен ідентифікувати значення> max в іншому випадку), вам доведеться (поки що принаймні) додати слухач поля.
Ось таке рішення, яке я використовував у минулому: http://codepen.io/wuori/pen/LNyYBM
Я знаю, що вже є відповідь, але якщо ви хочете, щоб ваш вклад поводився точно так само, як maxlength
атрибут або максимально наближений, використовуйте наступний код:
(function($) {
methods = {
/*
* addMax will take the applied element and add a javascript behavior
* that will set the max length
*/
addMax: function() {
// set variables
var
maxlAttr = $(this).attr("maxlength"),
maxAttR = $(this).attr("max"),
x = 0,
max = "";
// If the element has maxlength apply the code.
if (typeof maxlAttr !== typeof undefined && maxlAttr !== false) {
// create a max equivelant
if (typeof maxlAttr !== typeof undefined && maxlAttr !== false){
while (x < maxlAttr) {
max += "9";
x++;
}
maxAttR = max;
}
// Permissible Keys that can be used while the input has reached maxlength
var keys = [
8, // backspace
9, // tab
13, // enter
46, // delete
37, 39, 38, 40 // arrow keys<^>v
]
// Apply changes to element
$(this)
.attr("max", maxAttR) //add existing max or new max
.keydown(function(event) {
// restrict key press on length reached unless key being used is in keys array or there is highlighted text
if ($(this).val().length == maxlAttr && $.inArray(event.which, keys) == -1 && methods.isTextSelected() == false) return false;
});;
}
},
/*
* isTextSelected returns true if there is a selection on the page.
* This is so that if the user selects text and then presses a number
* it will behave as normal by replacing the selection with the value
* of the key pressed.
*/
isTextSelected: function() {
// set text variable
text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return (text.length > 0);
}
};
$.maxlengthNumber = function(){
// Get all number inputs that have maxlength
methods.addMax.call($("input[type=number]"));
}
})($)
// Apply it:
$.maxlengthNumber();
Chrome (технічно Blink) не реалізує максимальну довжину для <input type="number">
.
Специфікація HTML5 говорить, що максимальна довжина застосовна лише для типів тексту, URL-адреси, електронної пошти, пошуку, tel та пароля.
Абсолютне рішення, яке я нещодавно нещодавно спробував:
<input class="class-name" placeholder="1234567" name="elementname" type="text" maxlength="4" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 57" />
Я зроблю це швидко і легко зрозуміти!
Замість maxlength for type='number'
(maxlength мається на увазі для визначення максимальної кількості літер для рядка text
типу), використовуйте min=''
таmax=''
.
Ура
<input type="number">
це лише те, що ... введення числа (хоч і неперетворене з рядка для плавання через Javascript).
Моя здогадка, це не обмежує символи на введення ключових даних, maxLength
інакше ваш користувач міг би застрягнути у "ключі", якщо він забув десятковий на початку (Спробуйте ввести .
індекс, 1
коли <input type"text">
attr "maxLength" вже досягнуто ). Однак він буде підтверджений при надсиланні форми, якщо ви встановите max
атрибут.
Якщо ви намагаєтесь обмежити / перевірити номер телефону, використовуйте type="tel"
attr / value. Він підкоряється maxLength
attr і відображає лише клавіатуру мобільного номера (у сучасних браузерах), і ви можете обмежувати введення шаблоном (тобто pattern="[0-9]{10}"
).
maxlenght - текст типу введення
<input type="email" name="email" maxlength="50">
використовуючи jQuery:
$("input").attr("maxlength", 50)
maxlenght - номер типу введення
JS
function limit(element, max) {
var max_chars = max;
if(element.value.length > max_chars) {
element.value = element.value.substr(0, max_chars);
}
}
HTML
<input type="number" name="telefono" onkeydown="limit(this, 20);" onkeyup="limit(this, 20);">
type="number"
це новий тип із специфікації HTML 5. Якщо браузер ви тестируете в не визнаєtype="number"
це буде ставитися до неї , як ,type="text"
який робить поважатиmaxlength
атрибут. Це може пояснити поведінку, яку ви бачите.