2012-08-17 12 views
14

voglio aggiungere una classe CSS a un elemento select a mio avviso, la mia vista del modello ha una proprietà che ho esteso usando Knockout-Validation:Aggiungi classe CSS con Knockout Validator

self.selectedRootCause = ko.observable().extend({ 
    required: true 
}); 

Poi la mia select è in questo modo:

<form data-bind="submit: closeComplaint" method="post"> 
    <select data-bind="options: rootCauses, 
          optionsText: 'RootCauseText', 
          value: selectedRootCause, 
          optionsCaption: 'Choose..', 
          validationOptions: { errorElementClass: 
               'input-validation-error' }"> 
    </select> 

    <input type="submit" value="Close Complaint" /> 
</form> 

La mia funzione closeComplaint si presenta in questo modo:

self.closeComplaint = function() { 
    if (self.errors().length == 0) { 
     $.ajax({ 
      url: '@Url.Action("CloseComplaint")', 
      data: new DetailsComplaintAdmin(self.currentComplaint(), 
             self.selectedRootCause().RootCauseId 
       ), 
      success: function (data) { 
       console.log(data); 
      } 
     }); 
    } 
} 

Solo per il completamento, ecco la mia self.errors() funzione:

self.errors = ko.validation.group(self); 

Il problema è la classe input-validation-error non sembra essere aggiunto a select ingresso quando presento il mio modulo? Qualche idea?

risposta

22

Checkout Questo link

sua ha detto che si deve impostare decorateElement a true per applicare CSS classi per tag input.
Così, quando mi applico tale parametro globalmente funziona:

ko.validation.configure({ 
    decorateElement : true 
}); 

Acquista questo jsfiddle demo

Nota: Nelle versioni più recenti della biblioteca Knockout di convalida, l'opzione di configurazione decorateElement è stato rinominato decorateInputElement (details)

+0

Grazie mille! Funziona! – CallumVass

+0

Fantastico! Lavori!!! – nikoloza

+2

Più 1 per la menzione di decorInputElement –

Problemi correlati