gpt4 book ai didi

jquery 模态对话框,可编辑/删除表行

转载 作者:行者123 更新时间:2023-12-01 06:06:40 26 4
gpt4 key购买 nike

这是我的目标:拥有一个带有编辑/删除按钮的数据表。编辑按钮会打开一个模式对话框,其中的表单中预先填充了相应行的详细信息。我在让 ajax 工作以实际动态填写表单时遇到了困难,所以我只是在模式中打开一个编辑页面并传递 id。对于第一个编辑按钮来说它效果很好。随后的编辑按钮上什么也没有发生。我不知所措。我不是 javascript 或 jquery 专家,但是用 google 搜索了一下,没有找到任何可以处理我的情况的东西(或者我可以成功适应的东西)。我很确定它涉及 .each 和/或 .sibilngs,但我不确定如何实现。以下是除样式和一些用于验证用户的 PHP 之外的所有代码:

<link type="text/css" href="js/css/start/jquery-ui-1.8.9.custom.css" rel="stylesheet" />    
<!--<script type="text/javascript" src="js/js/jquery-1.4.4.min.js"></script>-->
<script type="text/javascript" src="js/jquery-1.5.1rc1.js"></script>
<script type="text/javascript" src="js/js/jquery-ui-1.8.9.custom.min.js"></script>

<script type="text/javascript">
//table highlights & such
$(document).ready(function() {
$(".striped tr").mouseover(function() {
$(this).addClass("highlight");
});
$(".striped tr").mouseout(function() {
$(this).removeClass("highlight");
});
$(".striped tr").toggle(function() {
$(this).addClass("selected");
}, function () {
$(this).removeClass("selected");
});
$(".striped tr:nth-child(odd)").addClass("odd");
});

$(function(){
$('#edit_number').dialog({ autoOpen: false,width: 400,height: 500, modal:true, open: function() {
var editqs = 'process.php?action=edit_num_form&id=' + $(this).data('num_id') + '&rep_id=<?php echo $rep_id ?>';
$("#edit_number").load(editqs);
}
});

$('.edit_number_link').live('click', function() {
var id = $(this).closest('tr').data('id');
$("#edit_number").data('num_id', id).dialog('open');
return false;
});


});

</script>
</head>

<body>
<table style="border: 1px solid #000;" border=1 cellpadding=0 cellspacing=0 class="striped">
<thead>
<tr style="background-color: #ccc;">
<th align=left width=100>Name</th>
<th align=left width=100>External</th>
<th align=left width=100>Internal</th>
<th align=left width=50>Options</th>
<th align=left width=50>Hours</th>
<th align=left width=150>Notes</th>
<th colspan=2>&nbsp;</th>
</tr>
</thead>
<?php
//db connection stuff
while($row = mysql_fetch_array($result))
{
$name = $row['name'];
$external = $row['external'];
$internal = $row['internal'];
if ($internal == "")
$internal = "&nbsp;";
$options = $row['options'];
if ($options == "")
$options = "&nbsp;";
$hours = $row['hours'];
if ($hours == "")
$hours = "&nbsp;";
$comments = $row['comments'];
if ($comments == "")
$comments = "&nbsp;";
$id = $row['id'];

echo "<tr data-id=".$id."><td>" . $name . "</td>";
echo "<td>" . build_link($external,$rep_id, "ext", $userfound) . "</td>";
echo "<td>" . $internal . "</td>";
echo "<td>" . $options . "</td>";
echo "<td>" . $hours . "</td>";
echo "<td>" . $comments . "</td>";
//echo "<td><a href='process.php?action=edit_num_form&id=" . $id . "&rep_id=".$rep_id."' title='Edit'><img src='edit.png' alt='Edit' border='0'></a></td>";
echo "<td><a href='#' title='Edit' class='edit_number_link'><img src='edit.png' alt='Edit' border='0'></a></td>";
echo "<td><a href='process.php?action=delete_num&id=" . $id . "&rep_id=".$rep_id."' title='Delete'><img src='delete.png' alt='Delete' border='0'></a></td>";
//echo "<td><a href='?action=delete' class='delete'>Delete</a></td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>

<div id="edit_number" title="Edit Number">
</div>
</body>

</html>

因此,理想情况下,我可以从每个编辑按钮检索数据,以在真实模式(而不是外部页面)中加载表单,但至少需要额外的实例才能工作。

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

由于我看不到整个代码集...#edit_number_link 是否在 #edit_number 内?如果是这样,您需要使用 jQuery 的 live() 方法来绑定(bind)事件,因为 DOM 在初始页面加载后更新。

此外,您不需要 attr('data-id') 因为 jQuery 现在会将这些属性映射到 .data() 方法。您需要 .data('id') 来检索此值。

另一件事是,当您应该使用类时却使用了 ID。 ID 应该是唯一的并且只能使用一次。您应该将 #edit_number_link 更改为类 .edit_number_link。我不确定#edit_number是哪个容器,但我假设只有一个。

$('.edit_number_link').bind('click', function() {
var id = $(this).closest('tr').data('id');
$("#edit_number").data('num_id', id).dialog('close').dialog('open');
return false;
});

更新在看到代码并在jsfiddle上实际尝试后,我发现发生的情况是,当您单击其他编辑链接时,对话框窗口已经打开并且没有触发它的开放回调。您需要执行的操作是更新代码,以便在打开对话框之前将其关闭。我上面的代码已更新为包含 .dialog('close')。另外,我已将 live 更改回 bind,因为在本例中不需要它。

关于jquery 模态对话框,可编辑/删除表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5157561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com