2013-08-30 66 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; 
    } 
}; 
相關問題