2013-08-30 27 views
5

我的页面中有以下HTML代码块。如果从js代码中设置值,maxlength不起作用

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

按钮被点击时,fillingInput的值被设定为值filledInput。 但是这样设定值时不考虑maxlength。 任何解决方案?

回答

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多个不同maxlengths的filledInputs,这对我来说似乎代价不大。 –

+0

嗯...亚..在那个萨斯你需要创建一个函数并调用该函数,而不是..虽然这不会减少你的工作..你使用jquery验证器来验证? – bipen

4

尝试slice

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

我想填充输入作为多个填充输入具有各种最大长度的公共输入。寻找一种更通用的方式。 –

+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; 
    } 
}; 
相关问题