2013-08-30 7 views
5

Ho il seguente blocco HTML nella mia pagina.maxlength non funziona se il valore è impostato dal codice js

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

quando il pulsante viene premuto, il valore di fillingInput è impostato come rapporto qualità-filledInput. Ma la lunghezza massima non viene considerata mentre si imposta un valore come questo. Qualche soluzione?

risposta

1

un modo per ottenere questo è ... rimuovere tutti i personaggi dopo il quinto personaggio. utilizzando 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 ..

si raccomanda di non utilizzare javascript inline.

+0

per singolo elemento è ok. se ho 100s di fillInputs con varie lunghezze massime, questo mi sembra poco costoso. –

+0

hmmm ... ya .. in quel sace devi creare una funzione e chiamare invece quella funzione .. anche se questo non riduce il tuo lavoro .. stai usando validatore jquery per validare ?? – bipen

4

Prova slice:

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

Desidero riempire l'input come input comune per più input riempiti che hanno varie lunghezze massime. cercando un modo un po 'più generico. –

+0

Quindi prendi il valore dell'attributo 'maxlength' e inseriscilo come secondo parametro da tagliare. C'è un po 'di duplicazione, ma questo perché JS non deve obbedire alla restrizione della lunghezza del valore, è necessario inserirlo esplicitamente. – skolima

1

Prova questa

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

    }); 
}); 
0

se si utilizza jQuery è possibile aggiungere un "valHook" che si aggancia in ogni chiamata di .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; 
    } 
}; 
Problemi correlati