2017-10-19 7 views
2

Wie kann ich einen regulären Ausdruck auf einem igTextEditor in igGrid Updating haben?Wie bekomme ich reguläre Expression in IgGrid-Zellen (Infragistics)?

Ich habe versucht zu validieren Option, aber es hat nicht funktioniert.

$("#schedulerTable").igGrid({ 
      columns: $scope.schedulerColumns, 
      width: "87%", 
      height: "300px", 
      fixedHeaders: true, 
      autoGenerateColumns: false, 
      autofitLastColumn: true, 
      autoCommit: true, 
      renderCheckboxes: true, 
      responseDataKey: "results", 
      dataSource: $scope.schedulerData, 
      updateUrl: "", 
      primaryKey: 'Id', 
      features: [ 
      { 
       name: "Updating", 
       generatePrimaryKeyValue: function (evt, ui) { 
        nextPrimarykey -= 1; 
        ui.value = nextPrimarykey; 
       }, 
       enableAddRow: true, 
       enableDeleteRow: true, 
       editMode: "row", 
       columnSettings: [ 
        { 
         columnKey: "Id", 
         editorType: "numeric", 
         editorOptions: { 
          readOnly: true 
         } 
        }, { 
         columnKey: "Time", 
         editorType: "text", 

         editorOptions: { 
         }, 
         validatorOptions: { 
          regExp: /^[a-zA-Z]{1}[a-zA-Z0-9_\.\-]*\@\w{2,10}\.\w{1,10}$/, 
          onblur: true, 
          onchange: true 
         }, 

         required: true, 
         validation: true, 
         defaultValue: "00:00" 
        }, 
        { 
         columnKey: "Mo" 

        }, 
        { 
         columnKey: "Tu" 

        }, 
        { 
         columnKey: "We" 

        }, 
        { 
         columnKey: "Th" 

        }, 
        { 
         columnKey: "Fi" 

        }] 
      }] 
     }); 

Ich mag eine Zeitauswahl in der Zeitspalte achive aber das gibt es nicht so versuche ich nur die Zeit im Texteditor von regulärem Ausdruck zu erhalten. Das Raster wird mit Spalten namens Time, Mo-Friday geladen. Wenn Sie auf Add in Grid klicken, können Sie in das Eingabefeld klicken und Ihre Zeit ausfüllen. Die Zeit sollte überprüft werden, bevor Sie auf "Fertig" klicken und eine Fehlermeldung anzeigen.

, um zu sehen, wie die Tabelle wie folgt aussehen: https://codepen.io/ablablabla/pen/PJLbJz

+0

Jeder HTML-Code, um dies allein JS-Code zu verstehen. –

+0

@headmax Wenn Sie das Infragistics-Tool verwenden, können Sie ein Raster erstellen, in dem nur igGrid für eine ID eines div aufgerufen wird. Wenn Sie das also testen oder alles überprüfen möchten, müssen Sie callig $ ('# whatever'). igGrid ({}); um ein voll funktionsfähiges Raster zu erhalten. – Amsel

+0

zum Beispiel diese https://codepen.io/headmax/pen/QqYZgq –

Antwort

3

Der Mangel an Validierung ist, weil die validatorOptions zum editorOptions gehören (wie unten zu übergeben bekommen, was Editor Sie als Anbieter wählen). Die validation: true bekommt nur einige Standardwerte, was wirklich nicht viel für ein Textfeld neben dem benötigten tut.

Und dann der RegExp Option (die oben so weit für eine E-Mail im Snippet ist, wie ich sagen kann) ist seit dieser Zeit Spalte seit 15.2 :) Also am Ende pattern gewesen können Sie versuchen:

//... 
    editorOptions: { 
    validatorOptions: { 
     pattern: /^\d{1,2}\:\d{2}$/, 
     onblur: true, 
     onchange: true 
    }, 
    }, 
//.. 

Hier ist ein aktualisierter codepen: https://codepen.io/anon/pen/YrgYxj

Edit: Oder wenn Sie die Fehlermeldung festlegen möchten:

//... 
    editorOptions: { 
    validatorOptions: { 
     pattern: { 
     expression: /^\d{1,2}\:\d{2}$/, 
     errorMessage: "Time should match a pattern like 00:00" 
     }, 
     onblur: true, 
     onchange: true 
    }, 
    }, 
//.. 

auf Ihre Ziele Je Sie COUL Verwenden Sie auch einen Mask Editor oder einen Date Editor als Provider. Auch der obligatorische Dokumentationslink: https://www.igniteui.com/help/iggrid-updating

P.S. Binden Sie an ein leeres Array, um den Fehler für die erste Zeile zu vermeiden, die keine Werte und vor allem keinen Primärschlüssel enthält.

+0

Wie kann ich die Benachrichtigung ändern, wenn sie nicht mit dem Muster übereinstimmt? Danke für deine gute Lösung. – Amsel

+0

@Amsel Sie können entweder eine globale 'errorMessage' festlegen oder eine für die Musterprüfung bereitstellen. Ich habe ein Schnipsel für Letzteres zur Antwort hinzugefügt. –

Verwandte Themen