public function confirmTransactionButton($confirmationFlag, $buttonName) {
$disabled = '';
$warningMessages = 'Watch Out';
$functionName = "return confirm(" . '\'' . "$warningMessages" . '\'' . ")";
if ($confirmationFlag == constant("Y.ENUM")) {
$disabled = 'disabled';
}
$button = "<input name='$buttonName' type='submit' class='BUTTON' id='$buttonName' onclick='$functionName' value='" . constant('KONFIRMASI.CON') . "' " . $disabled . " />";
return $button;
}
谁能帮我解决这个问题,警告对话框不会出现。
如果我将字符串更改为数字,它的工作
$warningMessages = 'Watch Out';
$functionName = "return confirm(" . '\'' . "$warningMessages" . '\'' . ")";
至
$warningMessages = '123';
$functionName = "return confirm(".$warningMessages.")";
最佳答案
问题是您对 JS 字符串和 HTML 属性值使用相同的分隔符,这会过早终止属性值。查看生成的源代码,您将看到:
它看起来像
<input ... onclick='confirm('foo')' />
你能看到问题(语法荧光笔有帮助)吗?
您可以通过使用不同的引号来解决此问题:
$functionName = "return confirm(" . '"' . "$warningMessages" . '"' . ")";
// ^ ^
所以你的 HTML 将变成
<input ... onclick='confirm("foo")' />
当然,最好的解决方案是根本不使用内联事件处理程序。看看these articles了解有关事件处理的更多信息。
关于javascript - 如何将字符串传递给 onclick 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23546363/