首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用enter键和动作按钮

问在R中使用enter键和动作按钮
EN

Stack Overflow用户
提问于 2015-09-01 15:50:34
回答 4查看 7.4K关注 0票数 30

我正在尝试编写一个javascript函数来扩展R闪亮的动作按钮演示。我希望用户能够通过点击动作按钮和当他们选择数字输入表单时点击enter来输入一个数字。ui.R的代码是:

代码语言:javascript
复制
shinyUI(pageWithSidebar(
  headerPanel("actionButton test"),
  sidebarPanel(
    tags$head(tags$script(src = "enter_button.js")), 
    numericInput("number", "N:", min = 0, max = 100, value = 50),
    br(),
    actionButton("goButton", "Go!"),
    p("Click the button to update the value displayed in the main panel.")
  ),
  mainPanel(
    verbatimTextOutput("nText")
  )
))

和服务者:

代码语言:javascript
复制
shinyServer(function(input, output) {
 ntext <- eventReactive(input$goButton, {
    input$number
  })

  output$nText <- renderText({
    paste(ntext(), input$goButton)
  })
})

我在www/文件夹中的一个名为enter_button.js的文件中包含了以下javascript:

代码语言:javascript
复制
$("#number").keyup(function(event){
    if(event.keyCode == 13){
        $("#goButton").click();
    }
});

但是,当我运行应用程序时,选择number input并点击enter操作按钮不会增加,但是如果我单击它,它就会增加。或者,我还测试了只在文档中的任何地方按enter就可以:

代码语言:javascript
复制
$(document).keyup(function(event){
    if(event.keyCode == 13){
        $("#goButton").click();
    }
});

这起作用了,所以我怀疑jQuery找不到#number元素。提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-09-01 21:05:17

我能够使用jQuery is(":focus")函数解决这个问题,我使用的代码是:

代码语言:javascript
复制
$(document).keyup(function(event) {
    if ($("#number").is(":focus") && (event.key == "Enter")) {
        $("#goButton").click();
    }
});
票数 34
EN

Stack Overflow用户

发布于 2018-06-06 07:28:38

这个github页面的代码就像一个魅力:https://github.com/daattali/advanced-shiny/blob/master/proxy-click/app.R

来源:https://deanattali.com/blog/advanced-shiny-tips/#proxy-click

代码语言:javascript
复制
library(shiny)

jscode <- '
$(function() {
  var $els = $("[data-proxy-click]");
  $.each(
    $els,
    function(idx, el) {
      var $el = $(el);
      var $proxy = $("#" + $el.data("proxyClick"));
      $el.keydown(function (e) {
        if (e.keyCode == 13) {
          $proxy.click();
        }
      });
    }
  );
});
'

ui <- fluidPage(
  tags$head(tags$script(HTML(jscode))),
  actionButton("btn", "Click me to print the value in the text field"),
  div("Or press Enter when the text field is focused to \"press\" the button"),
  tagAppendAttributes(
    textInput("text", NULL, "foo"),
    `data-proxy-click` = "btn"
  )
)

server <- function(input, output, session) {
  observeEvent(input$btn, {
    cat(input$text, "\n")
  })
}

shinyApp(ui, server)
票数 2
EN

Stack Overflow用户

发布于 2020-07-24 12:33:48

添加下面的代码在闪亮的应用程序。

外部Ui和Server功能-

代码语言:javascript
复制
jscode <- '
$(function() {
  var $els = $("[data-proxy-click]");
  $.each(
    $els,
    function(idx, el) {
      var $el = $(el);
      var $proxy = $("#" + $el.data("proxyClick"));
      $el.keydown(function (e) {
        if (e.keyCode == 13) {
          $proxy.click();
        }
      });
    }
  );
});
'

内部Ui功能-

代码语言:javascript
复制
tags$head(tags$script(HTML(jscode))),
`data-proxy-click` = "goButton"

goButton -动作按钮的名称

这将工作100%享受。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32335951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档