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.")";
答案 0 :(得分:1)
问题是你使用相同的JS字符串分隔符和HTML属性值,这会过早地终止属性值。查看生成的源代码,您将看到:
看起来像
<input ... onclick='confirm('foo')' />
你能看到问题(语法高亮显示有帮助吗?)
您可以使用不同的引号来解决此问题:
$functionName = "return confirm(" . '"' . "$warningMessages" . '"' . ")";
// ^ ^
所以你的HTML将成为
<input ... onclick='confirm("foo")' />
当然,最好的解决方案是根本不使用内联事件处理程序。请查看these articles以了解有关事件处理的更多信息。