2013-08-30 5 views
5

Ich habe den folgenden HTML-Block in meiner Seite.maxlength funktioniert nicht, wenn der Wert von js Code

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

, wenn die Schaltfläche geklickt wird, wird der Wert von fillingInput wird als Wert für filledInput gesetzt. Aber die maxlength wird nicht berücksichtigt, während Wert wie folgt gesetzt wird. Irgendeine Lösung?

Antwort

1

Ein Weg, um dies zu erreichen ist ... Entfernen aller Zeichen nach dem 5. Zeichen. mit 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 ..

es wird nicht empfohlen, Inline-Javascript zu verwenden.

+0

für einzelnes Element ist in Ordnung. Wenn ich 100s von gefüllten Eingängen mit verschiedenen maxlengths habe, scheint dies für mich wenig kostspielig zu sein. –

+0

hmmm ... ya .. in diesem scee müssen Sie eine Funktion erstellen und diese Funktion stattdessen aufrufen .. obwohl dies Ihre Arbeit nicht reduziert .. verwenden Sie jquery validator zu validieren? – bipen

4

Versuchen slice:

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

Ich möchte die fillingInput als gemeinsame Eingabe für mehrere filledInputs, die verschiedene maxlengths haben. auf der Suche nach einem etwas allgemeineren Weg. –

+0

Dann greifen Sie den Attributwert 'maxlength' und legen Sie ihn als zweiten Parameter in den Slice ein. Es gibt ein bisschen Duplizierung, aber das liegt daran, dass JS die Beschränkung der Wertlänge nicht beachten muss, Sie müssen es explizit eingeben. – skolima

1

Try this

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

    }); 
}); 
0

wenn Sie jQuery verwenden Sie können eine "valHook" hinzufügen, die in jedem Aufruf Haken von .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; 
    } 
}; 
Verwandte Themen