2011-07-15 24 views
61

jQuery経由でドロップダウンリストから選択した値を取得しようとしています。私は、私は空白がないことを確認し、[送信]をクリックしたときにフォームを検証するJavaScriptのビットを持って次のようにコードは次のとおりです。この場合、国籍にJQuery - 選択値を取得

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関数でそれをどのようにキャプチャするのか分かりません。

助けてください。

よろしく、スティーブン

答えて

104

var nationality = $("#dancerCountry").val();は動作するはずです。要素セレクタが正しく動作していますか?おそらく、あなたは試してみてください:

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

Benさん、ありがとうございます。国籍= $(' select [name = "dancerCountry"] ')。 – Stephen

+0

喜んで私は@ステパンを助けることができました! – BenM

48

val()<select>要素の、選択<option>要素のすなわちvalue属性を返します。

あなたが実際に選択<option>要素の内部テキストをしたいので、あなたはその要素にマッチし、代わりにtext()を使用する必要があります。

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

これは私が表示するテキストを必要なときに参考になったと#(「idオプション:選択」を参照)を使用して、検証のためのvalue属性を取る。ヴァル() – PRASANTH

+1

+1オプション 'のために:選択します' –

関連する問題