Reputation: 523
I have an a text input with a maximum length:
<input type="text" name="name" maxlength="50">
This has been working fine on all the desktop browsers I've tried, but the maximum length does not seem to be enforced on mobile browsers.
Is there any way to get mobile browsers to enforce maxlength
? I am open to using JavaScript and/or jQuery in the solution.
Upvotes: 19
Views: 17557
Reputation: 264
This problem is because predictive text is enabled on your mobile keyboard so disable predictive text.
<input autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" type="text" name="name" maxlength="50">
Upvotes: 0
Reputation: 479
This problem is because predictive text is enabled on your keyboard, disable it and try again
Upvotes: 3
Reputation: 5774
Universal jQuery way to enforce the stated maxlength
of a form field. (I needed it for sessionStorage, localStorage, and param overrides.) Code optimized for readability.
$('input').on('change', function () {
var max = $(this).attr('maxlength'),
val = $(this).val(),
trimmed;
if (max && val) {
trimmed = val.substr(0, max);
$(this).val(trimmed);
}
});
Upvotes: 0
Reputation: 111
var max = 1
input.addEventListener('keyup', function (event) {
event.target.value = event.target.value.substring(0, max)
})
Upvotes: 2
Reputation: 11
I'd suggest something a bit more simple. The aboves didn't work for me unless there was a space added for the field to pick up on it... or if I hit submit right after, it still passed the information.
if($(".input") > 20){$(".input") = input.slice(0,20)};
Upvotes: 0
Reputation: 703
var maxLength = 10;
var field = $('#myinput');
field.keydown( function(e)
{
if ( $(this).val().length >= maxLength ) e.preventDefault();
});
Upvotes: -1
Reputation: 10502
Try this one:
var $input = $('input')
$input.keyup(function(e) {
var max = 5;
if ($input.val().length > max) {
$input.val($input.val().substr(0, max));
}
});
jsFiddle here: http://jsfiddle.net/fttk2/1/
Upvotes: 9