2013-07-03 2 views
11

У меня есть входной текст с максимальной длиной:Навязывание атрибут MAXLENGTH на мобильных браузерах

<input type="text" name="name" maxlength="50"> 

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

Есть ли способ заставить мобильные браузеры применять maxlength? Я открыт для использования JavaScript и/или jQuery в решении.

+1

Я сильно подозреваю, что в игре есть что-то другое. Используете ли вы какие-либо библиотеки или фреймворки, чтобы превратить вашу разметку в нечто иное для мобильных браузеров, таких как jQuery Mobile? –

+0

Я бы второй, что @MattBall сказал. Вероятно, скрипт конфликтует или бросает ошибки. Вы видите какие-либо ошибки js? – jedmao

+0

Вы можете использовать http://mimo84.github.io/bootstrap-maxlength/, который выглядит как параметр 'validate' для браузеров, не поддерживающих атрибут maxLength, включая мобильные. –

ответ

5

Попробуйте один:

var $input = $('input') 
$input.keyup(function(e) { 
    var max = 5; 
    if ($input.val().length > max) { 
     $input.val($input.val().substr(0, max)); 
    } 
}); 

jsFiddle здесь: http://jsfiddle.net/fttk2/1/

+0

Можно ли отключить нажатие клавиши после того, как он достигнет максимума 5? –

+0

@ DineshKumar. Один из других ответов отключает нажатия клавиш после достижения максимума. Тем не менее, это не рекомендуется, так как тогда пользователь не сможет нажать обратное пространство. – mattsoave

-1
var maxLength = 10; 
var field = $('#myinput'); 
field.keydown(function(e) 
{ 
    if ($(this).val().length >= maxLength) e.preventDefault(); 
}); 
+1

Не может показаться, что когда-то достигнута максимальная длина, она не ударит. – Trevor

-1

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

if($(".input") > 20){$(".input") = input.slice(0,20)}; 
1
var max = 1 

input.addEventListener('keyup', function (event) { 
    event.target.value = event.target.value.substring(0, max) 
}) 
+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснений! – Carpetsmoker

0

Универсальный JQuery способ обеспечить заявленную maxlength поля формы. (Мне это нужно для sessionStorage, localStorage и param suprides.) Код оптимизирован для удобства чтения.

$('input').on('change', function() { 
    var max = $(this).attr('maxlength'), 
     val = $(this).val(), 
     trimmed; 

    if (max && val) { 
    trimmed = val.substr(0, max); 
    $(this).val(trimmed); 
    } 
}); 
Смежные вопросы