39615


皆様、いつも大変御世話になっております。  
PHP側で要素を配列として認識できる、との記事をおみかけし、  
自分のHTMLに当てはめようとして頭を悩ましています。

テーブル行はJSで動的に形成されます。  
こちらの行に含まれるINPUT要素に、本日までは"[]"を付けていませんでしたが  
見ようみまねで"[]"を付けてみました．．．

PHP側での取得にいざ挑戦しようとコーディングを始めたところ．．．

それ以前にJQueryで、当該INPUT項目の認識ができなくなってしまいました。  
例えばコレ：

[code]

    $("input[name=cd]").keydown(function(event) {
    
[/code]

====質問====  
以下がコーディングになりますが、テーブル行に収められたINUPUT要素（名前属性=cdとamount）  
を配列として処理するため、  
JS側とPHPでは どういった記述を施せばよろしいのでしょうか？  
JSは

[code]

    $("input[name=cd]").keydown(function(event) {
    
[/code]

の正しい記載方法を教えて頂ければ幸いです。  
PHPは

[code]

    if (isset($_POST["cd"]) && is_array($_POST["cd"])) {
        $arr_item = $_POST["food"];
    }
    
[/code]

で捉えられるのでしょうか？

[code]

    ====HTML====
    <!--### 右端の＋ボタン・－ボタンで自由に行を増減できる ###-->
    <table>
        <tr class="appLineDummy">
            <td><input type="text" name="cd[]" style="width:45px; ime-mode: inactive;"></td>
            <td><input type="text" name="amount[]" style="width:45px;"></td>
            <td><button class="rowins" type="button">+</button></td>
            <td><button class="rowdel" type="button">-</button></td>
        </tr>
    </table>
    
    
    
    ====JQuery====
    var $dummyRow = $("tr.appLineDummy");
    
    //### 初回の画面呼び出し時 10行の明細を生成 ###//
    $(document).ready(function(){
        for(var i = 0; i < 10; i++) {
            addRowBelow($dummyRow);
        }
    });
    
    // テーブル行追加
    $(document).on("click", ".rowins", function(e) {
        var $row = $(e.target).closest("tr");
            addRowBelow($row);
    });
    // テーブル行削除
    $(document).on("click", ".rowdel", function(e) {
        var row = $(this).closest("tr").remove();
        $(row).remove();
        downtotalCalc();
    });
    
    
    
    //品名ＣＤのテキストボックスにフォーカスが入って、希望出荷日が指定されていなかったら．．．
    //エラー回避の検知は希望出荷日の入力有無で行っています。
    $("input[name=cd]").keydown(function(event) {
        if ($("#calendar").val() == "") {
            errhandler($(this), true, "err#011");
            return false;
        }
    });
    
[/code]


CC BY-SA 3.0
2017-11-16T06:40:16.940
39614
2017-11-16T06:52:00.800
25696
question
javascript html jquery
動的に生成されるテーブル中のINPUT要素を、配列化してPHP・JS側双方で捉えたい


jQueryでは以下でname属性が配列でもイベント検知できます。

[code]

    $('input[name="cd[]"]').keydown(function(event) {
    
[/code]

PHP側はご質問の方法で配列として捉えることができます。`$_POST["cd"]`これ自体がkeyが0で始まるの配列になって渡ってきますので、

[code]

    //※イメージです
    $_POST["cd"] = array(　
         0 => ”hoge”,
         1 => ”hogehoge”,
    )
    
[/code]

foreachやarray_関数を利用して操作を行ってください。  
<http://php.net/manual/ja/language.types.array.php>


CC BY-SA 3.0
2017-11-16T06:52:00.800
39615
2017-11-16T06:52:00.800
22665
39614
answer