2017-01-14 3 views
0

Wenn ich die Bearbeitungsregeln custom_func und required = false festlegen, funktioniert die custom_func nur, wenn der Benutzer einen Wert eingibt. Ich meine, wenn der Benutzer die Eingabe leer lässt, wird custom_func von jqgrid übersprungen. In meinem Fall möchte ich validieren, ob ein Feldwert leer sein kann oder nicht, abhängig von anderen Benutzerwerten aus derselben Zeile. Also kann ich im colmodel nicht required = false setzen, da ich es nach dem submit validieren muss.jqgrid editoptions custom_func mit erforderlich = falsch

Dies ist eine pseudo-custom_func, zahlen keine Aufmerksamkeit auf seinen Inhalt:

colmodel: [ 
    {name:'xxx', editrules: { 
    required:false, 
    custom:true, 
    custom_func: function(value) { 
     if(othercolumn=='blah' && value=='') { 
      //this is error 
     } else { 
      //this is correct 
     } 
    } 
    }} 
] 

EDIT: Ich bin mit jqGrid 4.6.0 (Ich bin immer noch frei 4.13.6 in separaten Zweig Prüfung)

Antwort

1

Zuerst denke ich, dass Sie falsche Eigenschaften Ihres Codes veröffentlicht haben. Ich nehme an, dass Sie required, custom und custom_func innerhalb von editrules angeben und nicht innerhalb von editoptions (siehe the documentation).

Sekunden sollten Sie immer umfassen die Informationen über die Version von jqGrid, die Sie (können) verwenden und über die Gabel von jqGrid (free jqGrid, Gewerbe Guriddo jqGrid JS oder eine alte jqGrid in Version < = 4.7). Die Möglichkeiten verschiedener Versionen und unterschiedlicher Gabelungen von jqGrid sind unterschiedlich.

Ihr Problem zu lösen, sollten Sie nicht angebenrequired Eigenschaft in der Spalte oder required: undefiled zu verwenden. Nur bei explizite Verwendung von required: true wird die Validierung durch einen leeren Wert gestoppt. Wenn Sie explizitrequired: false angeben, wird custom_func nicht auf leeren Wert aufgerufen. Alle anderen Werte wie true und false von required Eigenschaft können Sie benutzerdefinierte Validierung vornehmen.

Das nächste Problem, das Sie haben, ist die Anforderung, auf den Wert eine andere Spalte für die benutzerdefinierte Überprüfung zuzugreifen. Es sollte ein Teil der getrennten Frage sein. Es ist wichtig, die Verzweigung von jqGrid, die Sie verwenden, die Version von jqGrid und den Bearbeitungsmodus (Inline-Bearbeitung, Formularbearbeitung oder Zellbearbeitung) zu kennen.

+0

ja ist editrules (bearbeitet), und jqGrid 4.6.0 Sie haben Recht, ich habe eine jqgrid wraper, die Standard erforderlich erfordert = falsch, wenn nicht deklariert. Also habe ich dieses Standardattribut gelöscht, damit ich custom_func mit einem beliebigen Wert verwenden kann. Vielen Dank! – Aberel

+0

@Aberel: Gern geschehen! – Oleg

+0

Über das letzte Problem: "Holen Sie den Wert eines anderen Eingabespalten", werde ich eine neue Frage stellen. – Aberel