Javascript 在Shiny忙时禁用元素
我使用的是这个问题中的一段Javascript 在Shiny忙时禁用元素,javascript,r,shiny,dropdownbutton,Javascript,R,Shiny,Dropdownbutton,我使用的是这个问题中的一段javascript: 它适用于按钮,但我也希望禁用类似于sliderInput、selectInput和textInput的功能 我试图将“按钮”替换为“输入”,这会禁用textinput字段。我想知道是否有一种方法可以禁用1go中的所有元素 更大的问题是: 当您打开下拉按钮时,关闭按钮通常会删除模式对话框,以防javascript标记从下面的演示应用程序中删除。但是,当脚本在应用程序中时,关闭按钮由于某种原因不再起作用。它仍然打印文本命令,这意味着它被观察到,但模态
javascript
:
它适用于按钮,但我也希望禁用类似于sliderInput
、selectInput
和textInput
的功能
我试图将“按钮”替换为“输入”,这会禁用textinput
字段。我想知道是否有一种方法可以禁用1go中的所有元素
更大的问题是:
当您打开下拉按钮时
,关闭按钮通常会删除模式对话框
,以防javascript标记从下面的演示应用程序中删除。但是,当脚本在应用程序中时,关闭按钮由于某种原因不再起作用。它仍然打印文本命令,这意味着它被观察到,但模态没有关闭。对话框中的另一个按钮仍然正常工作
应用程序:
库(闪亮)
图书馆(shinyWidgets)
ui我无法帮助您使用close按钮,尽管我发现只要您设置shinny:idle
句柄,对JavaScript的任何调用都将触发shinny:idle
,从而运行处理程序,而不是toggleDropdownButton
后面的JavaScript代码
然而,如何在JavaScript中选择多个元素的第一个问题可以通过一点jQuery
来解决。将代码更改为
$(document).on('shiny:busy', function() {
var $inputs = $('button,input');
console.log($inputs);
$inputs.prop('disabled', true);
});
$(document).on('shiny:idle', function() {
var $inputs = $('button,input');
console.log($inputs);
$inputs.prop('disabled', false);
})
使用它,您可以选择按钮和文本输入。现在,您可以了解使用哪种代码来禁用下拉列表
顺便说一句:也许你想看看shinyjs::disable
。使用此功能,您可以从R
侧禁用控件。您可以将其放在长时间计算的开始,并在结束时使用shinyjs::enable
。您能确认关闭按钮不起作用吗?shinywidgets的制造商说要下载github版本,但这也没能解决我的问题,因为他要推出最新版本。现在通过运行devtools::install_github(“dreamRs/shinyWidgets”)修复了此问题。是否有线索表明哪些关键字针对滑块并选择Input?顺便说一句,我也使用了shinyjs::disable和enable,但它们在“忙”时不起作用。该应用程序可以在几秒钟内计算出我的整个模型和绘图,但绘图的渲染有时需要30秒(Plotly的使用非常繁重),而R会认为在应用程序停止忙碌之前很久就可以启用它。不过javascript解决方案工作得非常完美。现在只需找到正确的标记即可
$(document).on('shiny:busy', function() {
var $inputs = $('button,input');
console.log($inputs);
$inputs.prop('disabled', true);
});
$(document).on('shiny:idle', function() {
var $inputs = $('button,input');
console.log($inputs);
$inputs.prop('disabled', false);
})