61 votes

JQuery - Obtenir la valeur select

Je vais essayer d'obtenir la valeur sélectionnée dans la liste déroulante via jQuery. J'ai un peu de javascript qui permet de valider un formulaire lorsque je clique sur ENVOYER, assurez-vous il n'y a pas de blancs, le code est comme suit:

function formCheckDancer(formobj){                  
            // Enter name of mandatory fields
            var fieldRequired = Array("dancerStageName", "dancerFullName", "dancerPhone", "dancerEmail", "dancerCountry", "dancerAvailableDate");

            // Enter field description to appear in the dialog box
            var fieldDescription = Array("Stage Name", "Full Name", "Phone Number", "Email Address", "Nationality", "Availability");

            // dialog message
            var alertMsg = "Please complete the following fields:\n";           
            var l_Msg = alertMsg.length;

            for (var i = 0; i < fieldRequired.length; i++){
                var obj = formobj.elements[fieldRequired[i]];               
                if (obj){
                    switch(obj.type){
                    case "select-one":                      
                        if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == "" || obj.options[obj.selectedIndex].text == "..."){
                            alertMsg += " - " + fieldDescription[i] + "\n";
                        }
                        break;
                    case "select-multiple":
                        if (obj.selectedIndex == -1){
                            alertMsg += " - " + fieldDescription[i] + "\n";
                        }
                        break;
                    case "text":
                    case "textarea":
                        if (obj.value == "" || obj.value == null){
                            alertMsg += " - " + fieldDescription[i] + "\n";
                        }
                        break;
                    case "checkbox":
                        if (obj.checked == false){                  
                            alertMsg += " - " + fieldDescription[i] + "\n";
                        }
                        break;
                    default:
                    }
                    if (obj.type == undefined){
                        var blnchecked = false;
                        for (var j = 0; j < obj.length; j++){
                            if (obj[j].checked){
                                blnchecked = true;
                            }
                        }
                        if (!blnchecked){
                            alertMsg += " - " + fieldDescription[i] + "\n";
                        }
                    }
                }
            }

            if (alertMsg.length == l_Msg){
                return sendDetailsDancer(); //Send email if all field are populated.
                return true;                
            }else{
                alert(alertMsg);
                return false;
            }
        }

        function sendDetailsDancer(){                       
            var stagename = $("input[name=dancerStageName]").val();         
            var fullname = $("input[name=dancerFullName]").val();
            var phone = $("input[name=dancerPhone]").val();
            var email = $("input[name=dancerEmail]").val();                                                                                             
            var nationality = $("#dancerCountry").val();            
            var availability = $("input[name=dancerAvailableDate]").val();    

            $("#contact_form_result_dancer").html('<center><img src="loading.gif" width="32" height="32" /></center>');
            $("#contact_form_result_dancer").show();
            $.post("http://localhost/lapello/wp-content/themes/lapello/sendMailDancer.php", {stagename: stagename, fullname: fullname, phone: phone, email: email, nationality: nationality, availability: availability}, function (data){
                $("#contact_form_result_dancer").html(data);            
            });
            setTimeout("contactReturnDancer()", 4000);
            return false;
        }

Dans ce cas, la Nationalité est la valeur que je veux. Comme vous pouvez le voir j'ai essayé:

var nationality = $("#dancerCountry").val();

ce qui ne semble pas fonctionner.

Si j'ai mis le message d'alerte suivant déclaration: alert(obj.les options de[l'obj.selectedIndex].texte); après l'affaire "sélectionner un" la valeur correcte est sortie donc je sais sa façon d'être transmis correctement.

Je ne suis pas sûr de la façon de le capturer dans le sendDetailsDancer fonction.

Toute aide appréciée.

En ce qui concerne, Stephen

107voto

BenM Points 23070

var nationality = $("#dancerCountry").val(); devrait fonctionner. Êtes-vous sûr que le sélecteur d'élément fonctionne correctement? Peut-être devriez-vous essayer:

var nationality = $('select[name="dancerCountry"]').val()

48voto

Frédéric Hamidi Points 123646

val () retourne la valeur de l' <select> élément, à savoir le value attribut sélectionné <option> élément.

Puisque vous voulez réellement le texte intérieur de l'élément <option> , vous devez faire correspondre cet élément et utiliser text () à la place:

 var nationality = $("#dancerCountry option:selected").text();
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X