2017-01-13 1 views
0

Ich wollte Django Modell dezimales Feld auf 4 Stellen in Client-Seite selbst beschränken Bedeutung Feld sollte nicht erlauben, Benutzer mehr als 4 Ziffern eingeben.Django clientseitige Validierung auf Dezimalfeld Grenze

Ich versuchte unten Code, aber es wird nur nach dem Speichern validieren, aber ich muss während der Eingabe von Ziffern durch den Benutzer begrenzen.

unit_price = models.DecimalField(db_column='UNIT_PRICE', max_digits=4, decimal_places=2) 

Antwort

1

Haben Sie versucht, ein Widget in Ihrer Formulardefinition zu verwenden?

unit_price = forms.DecimalField(
    widget=forms.NumberInput(attrs={'step': '0.01', 'min': '0.00', 'max': '99.99' })) 
+0

Vielen Dank für die Antwort, Hinzufügen von js zum Formular funktioniert, wie ich akzeptiert. – Sohan

0

Sie haben ein wenig Javascript verwenden, um den Benutzer zu beschränken Eindringen von mehr als 4 Stellen Sie die unten Schnipsel in Formulare und JavaScript-Dateien

Formen

unit_price = forms.DecimalField(
    widget=forms.NumberInput(attrs={'step': '0.01', 'min': '0.00', 'max': '99.99', onkeypress: 'return isValid(event)'})) 

Javascript

function isValid(event) { 
    var val = document.getElementById('test').value; 
    val = val.split('.').join(''); 
    event = (event) ? event : window.event; 
    var charCode = (event.which) ? event.which : event.keyCode; 
    if (val.length < 4 || charCode == 8 || charCode == 37 || charCode == 39 || charCode == 46){ 
    return true; 
    } 
    else { 
    return false; 
    } 
} 

Auf diese Weise kann die Benutzereingabe auf 4 Stellen auf Tastendruck auch eingeschränkt werden

+0

'plus one', funktioniert super, vielen Dank für die schnelle Lösung @gowtham – Sohan

+0

aber nach der Eingabe von 4 Ziffern kann ich diese Ziffern nicht löschen. – Sohan

+0

@Sohan Ich habe die Antwort jetzt korrigiert. Sie konnten nicht löschen, weil sonst ein Teil der Bedingung ausgeführt wird, nachdem 4 Ziffern eingegeben wurden, also haben Sie den Schlüsselcode – Gowtham

Verwandte Themen