2013-04-24 9 views
8

ho un compito per impostare bordo colore rosso per il casella di testo quando la convalida non riesce a .net MVC 4.Come impostare il colore rosso testo bordo quando la validazione fallisce

BExtensionMethods.cs

public static string GetTextBoxColor(this ModelStateDictionary ModelState) 
    { 
     string textBoxColor = string.Empty; 
     int count = 1; 
     var errorKeys = (from item in ModelState 
         where item.Value.Errors.Any() 
         select item.Key).ToList(); 
     foreach (var item in errorKeys) 
     { 
      textBoxColor += string.Format("{0}.{1}</br>", count, item); 
      count++; 
     } 
     return textBoxColor; 
    } 

Qui l'oggetto json contiene i valori. Come posso filtrarlo?

+0

Forse si tenta di impostare il colore rosso in cui si sta chiamando avviso? –

+0

@ AshwinSingh: come filtrare i valori da questo oggetto jso? – Niths

+0

Json può essere convertito direttamente in oggetti javascript che è possibile utilizzare per ottenere il valore. http://www.w3schools.com/json/json_eval.asp –

risposta

0
public static List<string> GetTextBoxColor(this ModelStateDictionary ModelState) 
    { 
     string textBoxColor = string.Empty; 
     int count = 1; 
     List<string> list = new List<string>(); 
     var errorKeys = (from item in ModelState 
         where item.Value.Errors.Any() 
         select item.Key.Substring(item.Key.LastIndexOf('.')).Trim('.')).ToList(); 
     foreach (var item in errorKeys) 
     { 
      textBoxColor += string.Format("{0}.{1}</br>", count, item); 
      list.Add(item); 
      count++; 
     } 
     return list; 

    } 
9

Hai bisogno di fare una classe CSS del genere:

.errorClass { border: 1px solid red; } 

e aggiungerlo alla vostra casella di testo whith jQuery:

$("#myTextBox").addClass('errorClass'); 
0

Se si dispone di una sola casella di testo e id è noto a voi, puoi usare la soluzione @PanzerKadaver. Altrimenti suggerirei di restituire in sè stesso gli id ​​delle caselle di testo che vuoi rendere rosso. Quindi esegui il ciclo e aggiungi la classe di errore sul lato client.

+0

Tutti i dati rientrano in questa variabile- objRenewableEnergy.Come posso filtrare i valori dall'oggetto objRenewableEnergy – Niths

+0

utilizzabile può utilizzare il risultato notation json.renewableEnergy e scorrere attraverso di esso. Nel caso in cui si voglia vedere l'esatto JSON, usando lo strumento di sviluppo di IE usando F12 e vedere la struttura del JSON che arriva con tutte le proprietà. È possibile eseguire il loop usin $ .each del jquery – Devesh

+0

per (var n = 0; n Niths

0

result.renewableEnergy ti darà il valore che ti serve. Eventuali altre proprietà del objRenewableEnergy è reperibile result.renewableEnergy.property

+0

Sì ... ma è una combinazione di tutti i valori. Voglio filtrarlo. Come posso? – Niths

+0

È un elenco o una raccolta che puoi utilizzare per il loop per accedere ai valori e trovare quello che ti serve. per (var n in result.renewableEnergy.values) {} –

+0

per (var n = 0; n Niths

13
if ($('#TextBoxID').val() == '') { 
    $('#TextBoxID').css('border-color', 'red'); 
} 
else { 
    $('#TextBoxID').css('border-color', ''); 
} 
+1

Spiegare cosa c'è di sbagliato nel codice OP e perché questo risolve il problema * modificando la risposta *. –

+0

Questo ha funzionato per me mentre aggiungere una classe no. – user890332

2

Basta copiare il codice qui sotto nel progetto u conoscere, sto usando puramente bootstrap e jQuery qui.

<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.3.0/js/bootstrap-datepicker.min.js"></script> 

<style type="text/css"> 
/** 
* Override feedback icon position 
* See http://formvalidation.io/examples/adjusting-feedback-icon-position/ 
*/ 
#eventForm .dateContainer .form-control-feedback { 
    top: 0; 
    right: -15px; 
} 
</style> 

<form id="eventForm" method="post" class="form-horizontal"> 
    <div class="form-group"> 
     <label class="col-xs-3 control-label">Event</label> 
     <div class="col-xs-5"> 
      <input type="text" class="form-control" name="name" /> 
     </div> 
    </div> 

    <div class="form-group"> 
     <label class="col-xs-3 control-label">Start date</label> 
     <div class="col-xs-5 dateContainer"> 
      <div class="input-group input-append date" id="startDatePicker"> 
       <input type="text" class="form-control" name="startDate" /> 
       <span class="input-group-addon add-on"><span class="glyphicon glyphicon-calendar"></span></span> 
      </div> 
     </div> 
    </div> 

    <div class="form-group"> 
     <label class="col-xs-3 control-label">End date</label> 
     <div class="col-xs-5 dateContainer"> 
      <div class="input-group input-append date" id="endDatePicker"> 
       <input type="text" class="form-control" name="endDate" /> 
       <span class="input-group-addon add-on"><span class="glyphicon glyphicon-calendar"></span></span> 
      </div> 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-xs-5 col-xs-offset-3"> 
      <button type="submit" class="btn btn-default">Validate</button> 
     </div> 
    </div> 
</form> 

<script> 
$(document).ready(function() { 
    $('#startDatePicker') 
     .datepicker({ 
      format: 'mm/dd/yyyy' 
     }) 
     .on('changeDate', function(e) { 
      // Revalidate the start date field 
      $('#eventForm').formValidation('revalidateField', 'startDate'); 
     }); 

    $('#endDatePicker') 
     .datepicker({ 
      format: 'mm/dd/yyyy' 
     }) 
     .on('changeDate', function(e) { 
      $('#eventForm').formValidation('revalidateField', 'endDate'); 
     }); 

    $('#eventForm') 
     .formValidation({ 
      framework: 'bootstrap', 
      icon: { 
       valid: 'glyphicon glyphicon-ok', 
       invalid: 'glyphicon glyphicon-remove', 
       validating: 'glyphicon glyphicon-refresh' 
      }, 
      fields: { 
       name: { 
        validators: { 
         notEmpty: { 
          message: 'The name is required' 
         } 
        } 
       }, 
       startDate: { 
        validators: { 
         notEmpty: { 
          message: 'The start date is required' 
         }, 
         date: { 
          format: 'MM/DD/YYYY', 
          max: 'endDate', 
          message: 'The start date is not a valid' 
         } 
        } 
       }, 
       endDate: { 
        validators: { 
         notEmpty: { 
          message: 'The end date is required' 
         }, 
         date: { 
          format: 'MM/DD/YYYY', 
          min: 'startDate', 
          message: 'The end date is not a valid' 
         } 
        } 
       } 
      } 
     }) 
     .on('success.field.fv', function(e, data) { 
      if (data.field === 'startDate' && !data.fv.isValidField('endDate')) { 
       // We need to revalidate the end date 
       data.fv.revalidateField('endDate'); 
      } 

      if (data.field === 'endDate' && !data.fv.isValidField('startDate')) { 
       // We need to revalidate the start date 
       data.fv.revalidateField('startDate'); 
      } 
     }); 
}); 
</script> 
Problemi correlati