16

Sto facendo qualcosa di simile alla convalida remota, tranne che già effettuo le mie chiamate manualmente tramite jquery e installo tutto ciò che ho dovuto configurare.Imposta manualmente un errore di convalida non invadente su una casella di testo

Ora il mio problema è, se voglio dire al validatore che una particolare casella di testo non è valida (e impedisce alla pagina di inviare, evidenziare la casella di testo, ecc.). Come farei questo dal codice?

@Html.LabelFor(m => Model.Slug) 
@Html.TextBoxFor(m => Model.Slug) 
<span id="UrlMsg" class="field-validation-error" style="display: none;"></span> 

if (error) { 
     $('#UrlMsg').html('This name is already in use.').fadeIn('fast'); 
     //what should I do here for the rest of the validation? 
} 

risposta

48

In primo luogo, è possibile aggiungere un riepilogo di convalida:

@Html.ValidationMessageFor(m => m.Slug) 

Quindi è possibile attivare manualmente la convalida jQuery/validazione discreto con il metodo .showError. Ecco un esempio:

var errorArray = {}; 
errorArray["Slug"] = 'Some error message for the Slug text box'; 
$('#SomeFormId').validate().showErrors(errorArray); 
+2

grazie amico questo è proprio quello di cui avevo bisogno, funziona come un incantesimo! – Rob

+1

Ma il modulo è valido se gli errori vengono aggiunti manualmente come $ ('# SomeFormId') = true? –

1

È anche possibile fare:

@Html.ValidationMessageFor(m => m.Slug) 

Con questa funzione nel codice:

function setError(id, message) { 
     var span = $("span[data-valmsg-for=\"" + id + "\"]"); 
     if (span && span.length > 0) { 
      $(span).html(message); 
      if (message && message != "") { 
       $(span).removeClass("field-validation-valid"); 
       $(span).addClass("field-validation-no-valid"); 
      } else { 
       $(span).removeClass("field-validation-no-valid"); 
       $(span).addClass("field-validation-valid"); 
      } 
     } 
    } 

quindi possibile impostare l'errore

setError("Slug", "errorMsg"); 
Problemi correlati