2016-04-11 22 views
0

ImはJavascriptに新しいので、私はこれを解決できません。私はチェックボックスフォームを持っているので、私は選択した値を取得し、PHPファイルに投稿する必要があります。ここでJAVASCRIPTでPHPを選択したチェックボックスの値を取得する

はスクリプトです:ここでは

<script> 
       $("#addusers").click(function(){ 

        var checkedValue = null; 
        var inputElements = document.getElementsByClassName('values'); 
        for(var i=0; inputElements[i]; ++i){ 
         if(inputElements[i].checked){ 
          checkedValue = inputElements[i].value; 
          break; 
         } 
        } 

        $.post("users_add.php", { 
         checkedValue:checkedValue 

        }, function(data) { 
         alert(data); 
        }); 
       }); 
      </script> 

は、PHPのコードです:

<td> 
           <div> 
            <?php 
            foreach($userProfiles as $u) 
            { 
             foreach($u as $x) 
             { 
              echo "<input type=\"checkbox\" name=\"values\"> $x"; 
              echo "<br>"; 
             } 
            } 
            ?> 

           </div> 
          </td> 

イムますprint_r($ _ POST)ポスト変数をチェックし、それが何を示すイマイチ。 私のjavascriptは大丈夫ですか?

答えて

0

JavaScriptが新しくなることを心配しないでください。私たちはいつか始めています。あなたのコードに関しては、最初の "for cycle"は最初の値を保存してスキップしています。あなたはまだ何も受け取っていませんが、私はあなたが1つの値しか得られないと思います。投稿されていない最も適切な原因は、あなたが正しいセレクタを使用していないことです。例えば:
var inputElements = document.getElementsByClassName('values');
は、次のようになり、すべてのHTML要素取得します:
<input type="text" class="values" />
をすでにバニラでそれをミックスする必要がないのjQueryを使用しているので、申し訳ありませんああ、私はちょうど、あなたがあなたのhtmlコードを投稿しました気づきましたjavascriptの、ここで私はあなたのコードが見つかり修正です:

  var checkedValues = []; 
      var inputElements = $('input[type="checkbox"]'); 
      inputElements.each(function() { 
       if($(this).is(':checked')){ 
        checkedValues.push($(this).val()); 
       } 
      });     

説明:
var checkedValues = [];
私たちはJavaScriptで配列を宣言し、この方法配列メソッド "push"にアクセスして、条件を満たす要素を挿入する(チェックされたチェックボックス)ことができます。

var inputElements = $('input[type="checkbox"]'); これは、DOMの要素のjQueryの選択である、我々はタイプ=チェックボックスの属性を持つすべての入力要素を取得します」と言っているあなたは自分のoficialサイトでjQueryのセレクタについての詳細を学ぶことができます。https://api.jquery.com/category/selectors/

inputElements.each(function() { 
    if($(this).is(':checked')){ 
     checkedValues.push($(this).val()); 
    } 
}); 

このビットがいくつか
inputElements.each(function(){});
これはinputElements選択の要素「それぞれの」機能を実行することになるんあなたは、公式ドキュメントにjQuery.eachについての詳細情報を取得することができます。https://api.jquery.com/each/

if($(this).is(':checked'))
これは、ループの現在の要素に "checked"属性セットがあるかどうかを尋ねます。 $(this)を使って元の選択から得た純粋なDOM要素をjQueryオブジェクトに変換し、 "is"メソッドを使用します。

checkedValues.push($(this).val());

は、ここでは、checked属性の集合ではなく、要素ではなく、ブールが、どんな入力の「値」プロパティに設定されてい要素の値を追加します。

明らかではない、または動作していないことはお気軽にお問い合わせください。 :)

関連する問題