2013-07-02 10 views
5

Qui il mio requisito è una volta che selezioniamo il SON o il Padre in una casella di selezione e se seleziono "Suocera" o "Padre-In_law" in un'altra casella di selezione, voglio un messaggio di avviso come "Suoceri sono non applicabile'.Validazione per la selezione di caselle a discesa?

Ecco il mio codice,

if (arr.indexOf(!(($(this).val() == 'Son' || $(this).val() == 'Father'))) > -1) { 
    alert('In-laws are not applicable'); 
    return false; 
} 

uno può aiutare per favore. Il jsFiddle è here.

-Grazie.

risposta

3

È possibile controllare ognuno dei selects ricerca di Son o Father dopo l'utente seleziona Father-in-law o Mother-in-law:

if($(this).val()=='Mother-in-law' || $(this).val()=='Father-in-law'){ 

    //for each of the Relation selects, we check if anyone is Son or Father    
    $('.classSelect').each(function(){ 
     var currentSelect = $(this).val(); 
     if(currentSelect == 'Son' || currentSelect == 'Father'){ 
      alert("In-laws are not applicable"); 
     } 
    }); 

} 

Living esempio: http://jsfiddle.net/4QUMG/10/

Aggiornamento

Living esempio utilizzando la arr array: http://jsfiddle.net/4QUMG/12/

Inoltre, vorrei salvare il valore di $(this).val() all'interno di una variabile.

+0

Ha già creato una matrice di valori selezionati. –

+0

@ColinDeClue Allora saprà come usarlo :) – Alvaro

+1

Chiaramente no, dal momento che sta facendo la domanda :) –

2

Se ti capisco, quello che vuoi è vedere se "Figlio" o "Padre" erano già stati selezionati, e al momento stiamo selezionando un "in-law", per lanciare l'errore.

if (arr.indexOf('Son') > -1 || arr.indexOf('Father') > -1 && currentVal.indexOf('-in-law') > -1) { 
     alert('In-laws are not applicable'); 
     return false; 
    } 

Tale codice lo farà. Se si desidera lavorare in senso inverso, (vale a dire, non possiamo selezionare in-legge prima il figlio o il padre, o) avremmo bisogno di aggiungere questo:

if ((arr.indexOf('Father-in-law') > -1 || arr.indexOf('Mother-in-law') > -1) && (currentVal === 'Son' || currentVal === 'Father')) { 
     alert('In-laws are not applicable'); 
     return false; 
    } 

anche: si potrebbe prendere $(this).val() fuori per una variabile all'inizio, quindi non la stai controllando in qualsiasi momento. Quindi, solo qualcosa come var currentVal = $(this).val(), e quindi fare riferimento che invece.

Ecco un violino: Fiddle

+0

Grazie per la soluzione, mi è stato molto utile, il problema è stato risolto. – Rajasekhar

+1

@Rajasekhar: se la mia soluzione ti ha aiutato, per favore considera di accettarla. –

1

Ecco un'altra opzione. Questo codice è meno efficiente delle altre risposte poiché sarà sempre iterato.

jQuery ha due varietà di $.each(array, function(index, value)... Funziona in modo simile ai loop correnti.

var fields = new Array(); 
$("#dataTable tr select[name^='dRelation']").each(function(i){ 
    fields.push(this.value); 
}); 
var rel = $(this).val(); 
$.each(fields, function(i,val) { 
    if((val=='Son' || val=='Father') && (rel == 'Father-in-law' || rel == 'Mother-in-law'))         
     alert("yep"); 
}); 
+0

Grazie per la tua soluzione, che mi è stata di aiuto. – Rajasekhar

Problemi correlati