javascript - 如何将字符串传递给 onclick 消息?

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

最佳答案

问题是您对 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/

相关文章:

javascript - WindowProxy 和 Window 对象?

php - TYPO3 TCA 值作为 Fluid 上的变量

php - concrete5 自定义 block 未将数组传递给 View

php - 数据库表单中的多个复选框

php - 使用 IFrame 阻止任何人查看我的网站

javascript - 如何通过 ajax 加载样式表并在加载完成后进行回调

javascript - 我怎样才能让用户能够点击一个事件来强制他们向下滚动?

javascript - D3.js sankey 的解析和无效值

php - 获取最后插入的准备好的语句的 ID

php - Laravel 5.3,用图像替换分页链接(<< 和 >>)