echoed HTML Form没有调用onsubmit函数
Echoed HTML Form does not call the onsubmit function
我的 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 中有文件,这意味着它不会在导入脚本时失败。
希望有人能帮助我。
感谢您的回答。
你确定那是渲染的 html?在编辑您的 post 之前,我确定那是您的问题所在,根据我的经验,由于无法转义字符串(例如双引号)而导致 js 处理程序的参数写入中断,因为它正在服务器中呈现php.
解决方案:将您的字符串数据编码为 base64 以安全地使用转义字符对字符串进行编码。
$encodedString = base64_encode("do you want to delete $array[0][1] $array[0][1]?");
onsubmit='return confirm($encodedString)'
根据有关 base64 字符串的文档:此编码旨在使二进制数据在通过非 8 位干净的传输层(例如邮件正文)传输时仍然存在。
你在 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 代码中定义过。
我的 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 中有文件,这意味着它不会在导入脚本时失败。
希望有人能帮助我。 感谢您的回答。
你确定那是渲染的 html?在编辑您的 post 之前,我确定那是您的问题所在,根据我的经验,由于无法转义字符串(例如双引号)而导致 js 处理程序的参数写入中断,因为它正在服务器中呈现php.
解决方案:将您的字符串数据编码为 base64 以安全地使用转义字符对字符串进行编码。
$encodedString = base64_encode("do you want to delete $array[0][1] $array[0][1]?");
onsubmit='return confirm($encodedString)'
根据有关 base64 字符串的文档:此编码旨在使二进制数据在通过非 8 位干净的传输层(例如邮件正文)传输时仍然存在。
你在 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 代码中定义过。