web-dev-qa-db-ja.com

JQuery-選択値を取得

JQueryを使用してドロップダウンリストから選択した値を取得しようとしています。 SENDをクリックしたときにフォームを検証するJavaScriptが少しあります。空白がないことを確認するため、コードは次のとおりです。

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;
        }

この場合、国籍は私が望む価値です。あなたが見ることができるように、私は試しました:

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

うまくいかないようです。

次のアラートステートメントを配置した場合:alert(obj.options [obj.selectedIndex] .text); 「select-one」の場合、正しい値が出力されるため、正しく渡されることがわかります。

SendDetailsDancer関数でキャプチャする方法がわからないだけです。

任意の助けに感謝します。

よろしく、スティーブン

61
Stephen

var nationality = $("#dancerCountry").val();は動作するはずです。要素セレクターが適切に機能していることを確認しますか?おそらくあなたは試してみるべきです:

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

val() は、<select>要素のvalue、つまりvalue選択された<option>要素の属性。

実際に選択した<option>要素のinner textが欲しいので、その要素と一致させて textを使用する必要があります代わりに()

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