我的onsubmit有问题:
echo "<form method='post' action='' onsubmit='return confirm(\"do you want to delete \" + {$array[0][1]} + \" \" +{$array[0][3]});'>
<input type='submit' name='delete' value='Delete'>
</form>";
如果按下提交按钮,则确认对话框无法打开。表单已提交,我的内容将被删除。我也尝试将js放在外部文件中,但这也不起作用。
以下是外部文件中的代码:
function submitDeleteForm(prename, name) {
confirm("Do you want to delete " + prename + " " + name + " ?")
}
我刚刚在onsubmit中使用了return submitDeleteForm。
呈现HTML:
<form method="post" action="apprentice" onsubmit="return confirm("Do you want to delete " + name+ " " +lastname);">
<input type="submit" name="delete" value="Delete">
</form>
在尝试使用外部文件时,HTML中包含文件,这意味着在导入脚本时它不会失败。
我希望有人可以帮助我。 谢谢你的回答。
答案 0 :(得分:0)
你确定这是渲染的HTML吗?在编辑你的帖子之前,我绝对确定你的问题在哪里,根据我的经验,写入js处理程序的参数会由于无法转义字符串(例如双引号)而中断,因为它是服务器在php中呈现。
解决方案:将您的字符串数据编码为base64,以便使用转义字符安全地编码字符串。
$encodedString = base64_encode("do you want to delete $array[0][1] $array[0][1]?");
onsubmit='return confirm($encodedString)'
根据有关base64字符串的文档:此编码旨在使二进制数据通过非8位清理的传输层(如邮件正文)传输。
答案 1 :(得分:0)
在confirm()中插入双引号时出错了。以下代码可能适合您。
echo "<form method='post' action='' onsubmit='return confirm(\"do you want to delete {$array[0][1]} {$array[0][3]}\");'>
<input type='submit' name='delete' value='Delete'>
</form>";
现在让我告诉你你在哪里做错了。 我们考虑一下
$array[0][1] = "Vijay1"
$array[0][3] = "Vijay3"
仅用于说明目的。对于此输入,您的代码将生成以下HTML代码(呈现):
其中vijay1和vijay3将成为 JavaScript 的字符串变量,而不是常量字符串。在这种情况下,您使用的JavaScript字符串变量从未在JavaScript代码中定义过。