2013-08-30 1 views
5

У меня есть следующий HTML-блок на моей странице.maxlength не работает, если значение установлено из js-кода

<input type="text" id="fillingInput"/> 
<input type="text" id="filledInput" maxlength="5"/> 
<input type="button" onclick="$('#filledInput').val($('#fillingInput').val());"/> 

при нажатии на кнопку, значение fillingInput устанавливается в качестве значения для filledInput. Но максимальная длина не учитывается при установке значения, подобного этому. Любое решение?

ответ

1

один способ получить это ... удаление всех символов после 5-го символа. используя substring()

<input type="button" id="add" /> 

JS

$('#add').click(function(){ 
    var str=$('#fillingInput').val(); 
    if(str.length > 5) { 
     str = str.substring(0,5); 

    } 
    $('#filledInput').val(str); 
}); 

fiddle ..

рекомендуется не использовать встроенный JavaScript.

+0

для одного элемента его ок. если у меня есть 100 с заполненными входами с различными максимальными значениями, для меня это немного дорого. –

+0

hmmm ... ya .. в этом случае вам нужно создать функцию и вызвать эту функцию вместо этого. Хотя это не уменьшает вашу работу. Используете ли вы jquery validator для проверки? – bipen

4

Попробуйте slice:

<input type="button" 
    onclick="$('#filledInput').val($('#fillingInput').val().slice(0,5));"/> 
+0

Я хочу, чтобы fillInput был общим входом для нескольких заполненных входов, которые имеют разные максимальные длины. ища немного более общий путь. –

+0

Затем возьмите значение атрибута 'maxlength' и поместите его в качестве второго параметра для среза. Есть немного дублирования, но это потому, что JS не должен подчиняться ограничению длины значения, вам нужно явно указать его. – skolima

1

Попробуйте

$(document).ready(function() { 
$('#add').click(function() { 
    var str = $('#fillingInput').val(); 
    if (str.length > 5) { 
     str = str.substring(0, 5); 
     $('#filledInput').val(str); 
    } 

    }); 
}); 
0

если вы используете JQuery вы можете добавить "valHook", который перехватывает в каждом вызове .val()

$.valHooks.input = { 
    set: function(element, value) { 
     if ("maxLength" in element && value.length > element.maxLength) 
      value = value.substr(0, element.maxLength); 
     element.value = value; 
     return true; 
    } 
};