Echoed HTML Form不会调用onsubmit函数

时间:2018-05-07 06:55:22

标签: javascript html form-submit onsubmit

我的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中包含文件,这意味着在导入脚本时它不会失败。

我希望有人可以帮助我。 谢谢你的回答。

2 个答案:

答案 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位清理的传输层(如邮件正文)传输。

参考: http://php.net/manual/en/function.base64-encode.php

答案 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代码(呈现):

enter image description here

其中vijay1和vijay3将成为 JavaScript 的字符串变量,而不是常量字符串。在这种情况下,您使用的JavaScript字符串变量从未在JavaScript代码中定义过。