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,但实际上是在生成 string 时调用该函数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 回答