google-apps-script - 如何获取谷歌可视化表中单选按钮的值
问题描述
我有一个使用图表包装器构建的表,如下所示:
var rightWrapper;
function drawVisualization() {
rightWrapper = new google.visualization.ChartWrapper({
"chartType": "Table",
'dataSourceUrl':'https://docs.google.com/spreadsheets/d/1I3N5DtdXGWFootaOCQM201K_ao2ZPWSWyw9_l7QcwQg/gviz/tq?sheet=User_my_crew&headers=1',
'containerId':'target_table_div',
'query':'SELECT A,B,C,D',
'options': { 'width': 700, 'height': 500, 'allowHtml': true }
});
google.visualization.events.addListener(rightWrapper, 'ready', onRightReady);
rightWrapper.draw();
function onRightReady() {
google.visualization.events.addListener(rightWrapper.getChart(), 'select', rightSelectionHandler);
}
function rightSelectionHandler() {
var selection = rightWrapper.getChart().getSelection();
if (selection.length == 1) {
var item = selection[0];
if (item.row != null) {
alert("selected row " + item.row);
var value = (rightWrapper.getSnapshot().getDataTable().getValue(item.row,3));
alert(value);
}
}
}
}
在第 3 列中,我有 html 来构建单选按钮。不幸的是,实际的 html 被存储了,我似乎没有办法轮询来找出现在检查了哪个单选按钮(上面代码中列出的 getValue 总是向我显示用于构建收音机的 html按钮,而不是现在“选中”的按钮)。
不幸的是,似乎该表内的任何点击都必须使用选择侦听器进行拾取,并且选择侦听器不会中继所选行和列之外的任何信息。我尝试构建 change 和 click 功能,并将 s 放在我的单选按钮周围。例如:
$("#radio").click(function(){ //also tried with .change
alert("working");
});
即使我禁用了原来的监听器,它也永远不会触发。
那么,我怎样才能知道我的用户选择了哪个单选按钮?
注意:我确实需要表格内的单选按钮,因为表格的每一行都有自己的单选按钮,可以为我提供不同的信息。
解决方案
您不需要表单,您只需要等待图表的'ready'
事件,
然后再分配更改事件。
请参阅以下工作片段,
选择一个收音机以查看名称和值...
google.charts.load('current', {
packages: ['controls', 'table']
}).then(function () {
var rightWrapper = new google.visualization.ChartWrapper({
chartType: 'Table',
dataSourceUrl: 'https://docs.google.com/spreadsheets/d/1I3N5DtdXGWFootaOCQM201K_ao2ZPWSWyw9_l7QcwQg/gviz/tq?sheet=User_my_crew&headers=1',
containerId: 'target_table_div',
query: 'SELECT A,B,C,D',
options: { 'width': 700, 'height': 500, 'allowHtml': true }
});
google.visualization.events.addListener(rightWrapper, 'ready', onRightReady);
rightWrapper.draw();
function onRightReady() {
$('input[type="radio"]').on('change', calcForm2);
}
});
function calcForm2(sender) {
console.log(sender.target.name, sender.target.value);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="target_table_div"></div>
推荐阅读
- javascript - 使用 ajax .load(),我的脚本没有加载。但在页面刷新时显示
- c++ - 将结构写入文件
- vba - 如何在 VBA 中舍入
- javascript - 拒绝加载脚本,因为它违反了以下内容安全政策
- php - public_html 问题上方的 fopen/fwrite 路径
- c++ - 调用 notify_all() 时线程未唤醒
- javascript - Javascript 范围:回调函数抛出“今天不是函数”
- cmake - CMake 不能跟随符号链接
- python-3.x - “预期有缩进块”错误,但有一个缩进块
- dotfuscator - Dotfuscator - ${configuration} ${platform} 在 VS 类库项目中为空