html表单中的变量未传递到Javascript窗口确认


Variable from html form not passing to Javascript window confirm

我对stackoverflow并不陌生,因为我的问题(别人问的)已经在这里得到了很长一段时间的答案,但我终于遇到了一些我还没能找到答案的问题,所以希望你们能帮上忙。

为了简要介绍一下历史,我为实验室设备建立了一个硬件检查系统。不久前,我手动运行mysql命令来添加设备,但在我的其他职责变得过于繁重后,我决定建立一个管理页面来管理它,并在不了解内部结构的情况下为其他一些管理员分配一种修改硬件数据库的方法,以及一个基本的添加/删除用户功能。这已经实施了很长一段时间,总体上运行得很好,但在一次不幸的事件后,另一名管理员试图激活浏览器窗口,并意外地点击了另一名管理用户的删除按钮,我决定在窗口中输入确认提示,并在确认窗口中引用用户名。这是我现在在里面的代码。我删除了所有不相关的内容,除了我遇到麻烦的部分。如果我应该把整件事都发出来,我可以,但还差200行。

function DelUserValidate()
{
var clicked=document.forms["deluser"]["delrootuser"].value;
var confirmed=confirm("Are you sure you want to delete this user: "+clicked);
if (confirmed==true)
    {
return true;
    }
else
    {
return false;
    }
}
<?php
$con = mysql_connect("localhost","webby","webical");
mysql_select_db("checkout", $con);
$result = mysql_query("SELECT * FROM root_mem ORDER BY id");
echo "<table border='1'>
<tr>
<th>Username</th>
<th>Password</th>
</tr>";
while($row = mysql_fetch_array($result))
    {
    echo "<tr>";
    echo "<td>" . $row['username'] . "</td>";
    $rootusername = $row['username'];
    echo '<td bgcolor="#fff">' . $row['password'] . "</td>";
    echo "<td bgcolor='"red'"><form style='"margin-bottom:0;'" action='"root-delrootuser.php'" method='"post'" name='"deluser'" onsubmit='"return DelUserValidate();'"><input type='"submit'" value='"Delete User'"><input type='"hidden'" name='"delrootuser'" value='"$rootusername'"><input type='"hidden'" name ='"adminuse'" value='"$adminuse'"></form></td>";
    echo "</tr>";
    }
    echo "</table>";
?>

据我所知,var clicked=document.forms["deluser"]["delrootuser"].value;部分是导致我出现问题的原因。

如果我将这个变量定义为静态的,比如"text",那么当我单击用户旁边的删除按钮时,一切都会正常工作。系统会提示我单击"确定"或"取消",每个按钮都会按预期操作。如果我如上定义它,它完全绕过了函数,就好像它不存在一样。我希望每个人都能看到他们要删除的用户名。起初我认为它没有传递$rootusername变量,所以我在表单字段中将其替换为当时正在测试删除的用户名,但它仍然绕过了该函数。你知道我遗漏了什么吗?

由于某种原因,我一直收到一个错误,说DelUserValidate没有定义,所以我使用jQuery将函数附加到提交事件。这是一个可以玩的jsFiddle。

$('#yourFormID').submit(function() {
    var clicked = document.forms.deluser.delrootuser.value;
    return confirm("Are you sure you want to delete this user: " + clicked);
});

即使使用了您提供给我的jquery内容,我仍然无法让它工作,尽管它稍后可能会在其他方面派上用场。然而,我终于解决了我的问题。

经过大量的阅读和对服务器端与客户端的熟悉,我了解到在javascript函数中引用PHP变量似乎不起作用。可能还有其他几种方法,但经过一些实验,我在onsubmit中打开了PHP标记,并以这种方式引用了一个PHP变量,从而回显了一个window.conf。我的最后一个代码看起来像这样,运行起来很有魅力。

<td bgcolor="red"><form style="margin-bottom:0;" action="root-delrootuser.php" method="post" name="deluser" onsubmit="<?php echo "<script>window.confirm('blah, blah blah'" . $variable . "');</script>";?><input type="submit" value="Delete User"><input type="hidden" name="delrootuser" value="$rootusername"><input type="hidden" name ="adminuse" value="<?php echo $adminuse;?>"></form></td>