如何将String传递给onclick消息?

时间:2014-05-08 15:39:26

标签: javascript php

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.")";

1 个答案:

答案 0 :(得分:1)

问题是你使用相同的JS字符串分隔符和HTML属性值,这会过早地终止属性值。查看生成的源代码,您将看到:

看起来像

<input ... onclick='confirm('foo')' />

你能看到问题(语法高亮显示有帮助吗?)

您可以使用不同的引号来解决此问题:

$functionName = "return confirm(" . '"' . "$warningMessages" . '"' . ")";
//                                   ^                          ^

所以你的HTML将成为

<input ... onclick='confirm("foo")' />

当然,最好的解决方案是根本不使用内联事件处理程序。请查看these articles以了解有关事件处理的更多信息。