2017-04-26 3 views
1


Ich kann nicht herausfinden, wie Sie die Eingabemaske Maske basierend auf Wert Länge ändern.

Zum Beispiel: Ich habe zwei Auto Nummer Vorlagen '99 -999-99 'und' 999-99-999 '. Ich muss die Eingabemaske basierend auf der Wertlänge ändern.

Wenn die Wertlänge 7 oder kleiner ist, muss die Vorlage '99 -999-99 'sein. Wenn die Wertlänge größer als 7 ist, muss der Tempel '999-99-999' sein.jquery Ändern Eingabemaskenvorlage basierend auf Wert Länge

Mein Code:

$("#carnum").keyup(()=>{ 
    var masks = ['99-999-99', '999-99-999']; 
    var value = $('#carnum').val().replace(/-/g, ''); 
    value.length <= 7 ? -1 : $('#carnum').mask(masks[1]); 
}) 
$("#carnum").mask('99-999-99'); 

Hier ist die fiddle.

Vielen Dank!

Antwort

2

Bevor wieder auf das gleiche Element Maskierung ist es eine bewährte Methode, um es zu demaskieren, hier wird der Beispielcode Referenz für Maske dynamisch ändernden oder bedingt

var changeMask=0; 
$("#carnum").keyup(()=>{ 
    var masks = ['99-999-99', '999-99-999']; 
    var value = $('#carnum').val().replace(/-/g, '').replace(/_/g,''); 
    if(value.length==7){ 
    changeMask++; 
    } 
    if(changeMask>1&&value.length>=7) { 
    $('#carnum').unmask(masks[0]); 
    $('#carnum').mask(masks[1]); 
    var arrayValue=value.split(""); 
    $("#carnum").val(""); 
    for(var index=0;index<arrayValue.length;index++){ 
    $("#carnum").val(function(i, val) { 
     return val + arrayValue[index]; 
    }).trigger('input'); 
    } 
    } 
}) 
$("#carnum").mask('99-999-99'); 

Working fiddle here

Verwandte Themen