2013-02-15 19 views
14

Ho il seguente codice in jQuery.
È necessario visualizzare un messaggio di convalida "Anno richiesto" quando il valore dell'opzione dell'elemento select è "0".jQuery select box validation

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#register").validate({ 
     debug: true, 
     rules: { 
      year: { 
       required: function() { 
        if ($("#year option[value='0']")) { 
         return true; 
        } else { 
         return false; 
        } 
       } 
      } 
     }, 
     messages: { 
      year: "Year Required", 
     }, 
    }); 
}) 
</script> 

casella Seleziona

<select name="year" id="year"> 
    <option value="0">Year</option> 
    <option value="1">1919</option> 
    <option value="2">1920</option> 
    <option value="3">1921</option> 
    <option value="4">1922</option> 
</select> 
+0

if ($ ('anno opzione #: selezionato'.) Val() == "0") –

+0

Sono questi errori di battitura virgole extra o errori? –

+0

@wolvern Grazie ... ma non funziona. L'ho controllato con IE ma non ho mostrato alcun errore nella codifica ... tutte le idee? – Tom

risposta

40

Dal momento che non è possibile impostare value="" entro il primo option, è necessario creare il proprio regola utilizzando the built-in addMethod() method.

jQuery:

$(document).ready(function() { 

    $('#myform').validate({ // initialize the plugin 
     rules: { 
      year: { 
       selectcheck: true 
      } 
     } 
    }); 

    jQuery.validator.addMethod('selectcheck', function (value) { 
     return (value != '0'); 
    }, "year required"); 

}); 

HTML:

<select name="year"> 
    <option value="0">Year</option> 
    <option value="1">1955</option> 
    <option value="2">1956</option> 
</select> 

lavoro Demo: http://jsfiddle.net/tPRNd/


Risposta originale: (Solo se è possibile impostare value="" entro il primo option)

Per convalidare correttamente un elemento select con il plugin jQuery Convalida richiede semplicemente che il primo contiene optionvalue="". Quindi rimuovere il 0 da value="0" ed è stato risolto.

jQuery:

$(document).ready(function() { 

    $('#myform').validate({ // initialize the plugin 
     rules: { 
      year: { 
       required: true, 
      } 
     } 
    }); 

}); 

HTML:

<select name="year"> 
    <option value="">Year</option> 
    <option value="1">1955</option> 
    <option value="2">1956</option> 
</select> 

Demo: http://jsfiddle.net/XGtEr/

+0

Grazie Sparky .. Ha funzionato ora. Sì, conosco la seconda opzione, ma non posso dedurre lo zero dai valori delle opzioni. Puoi spiegare a cosa serve questo jsfiddle? – Tom

+0

@ Tom, ho lasciato entrambe le opzioni nella risposta per altri lettori per capire la differenza tra i due. – Sparky

+0

Jquery non è supportato in alcuni vecchi browser? Se è così, abbiamo bisogno di aggiungere convalide lato server anche insieme allo scripting lato client? – Tom

0

semplificare il tutto un po ', correggere alcuni problemi con le virgole, che farà saltare in aria alcuni browser:

$(document).ready(function() { 
     $("#register").validate({ 
      debug: true, 
      rules: { 
       year: { 
        required: function() { 
         return ($("#year option:selected").val() == "0"); 
        } 
       } 
      }, 
      messages: { 
       year: "Year Required" 
      } 
     }); 
    }); 

salto ad un ipotesi, dovrebbe il vostro prescelto non hai questo attributo validate="required:true"?

+0

@ Mark Grazie .. La codifica non sembra un errore ma non produce output corretto (nessuna uscita). – Tom

+0

Suppongo che dobbiamo conoscere il plug-in di convalida esatto che stai utilizzando. –

+0

È stato taggato come tale, ma ho corretto il titolo per renderlo più chiaro. – Sparky

9

di mettere una regola di richiedere in un elenco di selezione è sufficiente un'opzione con un valore vuoto

<option value="">Year</option> 

quindi solo applicando richiesto da sola è sufficiente

<script> 
    $(function() { 
     $("form").validate(); 
    }); 
</script> 

con modulo

<form> 
<select name="year" id="year" class="required"> 
    <option value="">Year</option> 
    <option value="1">1919</option> 
    <option value="2">1920</option> 
    <option value="3">1921</option> 
    <option value="4">1922</option> 
</select> 
<input type="submit" /> 
</form> 

fiddle is here

+0

+1 per essere l'unico responsabile della risposta che comprende questo plug-in. – Sparky

+0

Grazie .. utilizzando il valore vuoto funzionerà correttamente. ma non posso usare valori vuoti nel mio programma perché è visualizzato da una matrice. per aggiungere valori vuoti, è sufficiente utilizzare il valore richiesto: true only :) – Tom

+0

@Tom, dovresti averlo menzionato nel tuo OP e dovresti anche avere la cortesia di gestire le risposte che le persone hanno già postato sulla tua altra domanda: http: // stackoverflow.com/questions/14889736/jquery-select-box-validations-with-validate-plugin – Sparky

1

http://docs.jquery.com/Plugins/Validation/Methods/required

modificare il codice per 'selezionare' come sotto per il controllo di una selezione 0 o null valore da selezionare Elenco

case 'select': 
var options = $("option:selected", element); 
return (options[0].value != 0 && options.length > 0 && options[0].value != '') && (element.type == "select-multiple" || ($.browser.msie && !(options[0].attributes['value'].specified) ? options[0].text : options[0].value).length > 0); 
+0

Inserisci il codice in un 'blocco di codice' per una migliore leggibilità. – SilentAssassin

1

Jquery Select Box Validation.You può avviso di messaggio tramite avviso o Put messaggio nel Div secondo i vostri requisiti .

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="message"></div> 
 
<form method="post"> 
 
<select name="year" id="year"> 
 
    <option value="0">Year</option> 
 
    <option value="1">1919</option> 
 
    <option value="2">1920</option> 
 
    <option value="3">1921</option> 
 
    <option value="4">1922</option> 
 
</select> 
 
<button id="clickme">Click</button> 
 
</form> 
 
<script> 
 
$("#clickme").click(function(){ 
 

 
if($("#year option:selected").val()=='0'){ 
 

 
alert("Please select one option at least"); 
 

 
    $("#message").html("Select At least one option"); 
 

 
} 
 

 

 
}); 
 

 
</script>

+2

Un esempio di codice è buono ma suggerirei di aggiungere una breve descrizione di ciò che deve essere fatto o la risposta potrebbe essere contrassegnata come una risposta di qualità molto bassa. – Syfer

+0

Il codice è valido per la convalida della casella di selezione come definito nella domanda. Esistono due tipi di messaggi uno è Avviso e Altro è Stampa in Div. Per favore fatemi sapere se avete bisogno di ulteriori chiarimenti. Grazie –

+0

Intendevo mettere la descrizione con il tuo post. Quindi chiunque legga in futuro legge anche la descrizione. – Syfer