1

動的に生成されたテーブルで、クリックされたテーブル セルに固有のデータを送信するクリック可能なボタンを作成するのに苦労しています。

ユーザーがこの AJAX 呼び出しで検索ボックスに入力するたびに、私のテーブルが生成され、変更されます。

      $(document).ready(function(){
        $("#data").keyup(function () {
            $.ajax({
                type: "POST",
                dataType: "JSON",
                data: "data=" + $("#data").val(),
                url: "search1.php",
                success: function(msg){
                    var output = "";
                    for(var i = 0; i < msg.length; i++) {
                        output += '<tr onmouseover=this.style.backgroundColor="#ffff66"; onmouseout=this.style.backgroundColor="#F0F0F0";>';
                        output += '<td>';
                        if (msg[i].website != ''){ output += '<a href = ' + msg[i].website + ' target = "_blank">' + msg[i].name + '</a></td>';}
                        else output += msg[i].name + '</td>';
                        output += '<td class="description">' + msg[i].description + '</td>';
                        output += '<td><input type="button" onclick=' + submit() + ' value=' + msg[i].id + '></td></tr>'; // Here is where I'd like to put in a clickable button 
                    }
                    $("#content").html(output);
                    $("#myTable").trigger("update");
                }
            });
        });
    });

submit()簡単に言えば、への呼び出しalert("hello")のすべてのインスタンスに対してページが読み込まれるときに実行されます。ページの読み込み時ではなく、ボタンがクリックされたときにのみ送信が呼び出されるようにする方法を誰かに説明してください。前もって感謝します。onclicksubmit()

4

2 に答える 2

2

submit()引用符で囲まれた文字列に呼び出しを入れる必要があります。msg[i].id についても同様です。HTML のすべての値は引用符で囲む必要があります。

output += '<td><input type="button" onclick="submit()" value="' + msg[i].id + '"></td></tr>';
于 2012-12-09T02:50:49.717 に答える
1

submit()ボタンのに割り当てようとしてonclickいますが、文字列を生成するときに実際に関数を呼び出していますoutput。連結ではなく、文字列内で引用符で囲む必要があります。

 output += '<td><input type="button" onclick="submit()" value="' + msg[i].id + '"></td></tr>';
 //----------------------------------------^^^^^^^^^^^^

より良い戦略は、onclick属性を完全に除外し、jQuery を使用.on()してメソッドを動的に割り当てることです。イベントを HTML 属性にハードコーディングするよりも、イベントを動的にバインドする方が良い方法と見なされることがよくあります。

// No onclick attribute in the string:
 output += '<td><input type="button" value="' + msg[i].id + '"></td></tr>';

// And a call to .on() in the $(document).ready()
$('input[value="'+msg[i]+'"]').on('click', function() {
  submit();
});
于 2012-12-09T02:50:55.690 に答える