如果我更改了数字输入的格式,则无法使用闪亮的书签

万维网

我想设计一个使用Shiny的应用程序,该应用程序允许用户为输入值添加书签。但是,我发现如果更改的输入格式,则numericInput书签将无法正常工作。

根据此链接(https://beta.rstudioconnect.com/barbara/format-numbers/)格式化的输入numericInput我创建了一个js名为number_format.js的文件,并将该文件存储在目录中www代码如下。

$(document).ready(function() {
  // Helper function to guarantee cross-browser compatibility
  // adapted from: http://stackoverflow.com/a/16157942
  function localeString(x, sep, grp) {
    var sx = (''+x).split('.'), s = '', i, j;
    sep || (sep = ',');            // default separator
    grp || grp === 0 || (grp = 3); // default grouping
    i = sx[0].length;
    while (i > grp) {
      j = i - grp;
      s = sep + sx[0].slice(j, i) + s;
      i = j;
    }
    s = sx[0].slice(0, i) + s;
    sx[0] = s;
    return sx.join('.');
  }

  // To change Number's input field (lose arrows and other functionality)
  $('#Number')[0].type = 'text';

  // To format the number when the app starts up
  $('#Number').val(localeString($('#Number').val()));

  // To format the number whenever the input changes
  $('#Number').keyup(function(event) {
    $(this).val(localeString($(this).val().replace(/,/g, '')));
  });
});

然后是shiny带有numericInput和书签按钮代码

# Load the packages
library(shiny)
library(shinydashboard)

# User Interface
ui <- function(request) {
  dashboardPage(
    header = dashboardHeader(title = "Bookmark Example"),
    sidebar = dashboardSidebar(
      sidebarMenu(
        menuItem(
          text = "Example",
          tabName = "tab1"
        ),
        bookmarkButton()
      )
    ),
    body = dashboardBody(
      # Change tags
      tags$head(tags$script(src = "number_format.js")),
      tabItems(
        tabItem(
          tabName = "tab1",
          numericInput(inputId = "Number", label = "Number:", value = NA)
          )
        )
      )
  )
}

server <- function(input, output, session){
}

# Run the app
shinyApp(ui, server, enableBookmarking = "url")

通过运行此代码,的输入numericInput具有正确的格式,但是书签无法正常工作。我们可以通过注释掉该行tags$head(tags$script(src = "number_format.js")),比较结果,以查看如果数字未自动格式化,则书签将起作用。

有没有办法让自动格式化和书签同时工作?

伊斯米尔谢尔夫

这是一种解决方法:

# Load the packages
library(shiny)
library(shinydashboard)

# User Interface
ui <- function(request) {
  dashboardPage(
    header = dashboardHeader(title = "Bookmark Example"),
    sidebar = dashboardSidebar(
      sidebarMenu(
        menuItem(
          text = "Example",
          tabName = "tab1"
        ),
        bookmarkButton()
      )
    ),
    body = dashboardBody(
      # Change tags
      tags$head(tags$script(src = "number_format.js")),
      tabItems(
        tabItem(
          tabName = "tab1",
          numericInput(inputId = "Number", label = "Number:", value = NA)
        )
      )
    )
  )
}

server <- function(input, output, session){

  bigMarkInputs <- c("Number")

  setBookmarkExclude(bigMarkInputs)

  onBookmark(function(state){
    for (bigMarkInput in bigMarkInputs){
      state$values[[bigMarkInput]] <- isolate({input[[bigMarkInput]]})
    }
  })

  onRestore(function(state){
    for (bigMarkInput in bigMarkInputs){
      updateNumericInput(session, inputId = bigMarkInput, value = state$values[[bigMarkInput]])
    }
  })

}

# Run the app
shinyApp(ui, server, enableBookmarking = "url")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果我更改了redis conf文件中的IP和端口,则无法连接Redis Client

如果使用“value”字段,则无法更改 React 输入组件的值

如果更改了隐藏输入,则更新变量

如果我仅将jQuery放在</ body>之前,则无法使用jQuery,但如果将其放在<head>中,则无法使用

如果使用“-”作为日期分隔符的默认系统日期格式,则无法更改以“ /”为分隔符的日期格式

如果使用jQuery val()或JavaScript更改了值,则输入事件不起作用

如果我的Kotlin应用是使用Jenkins构建的,则无法使用kotlin-maven-noarg

pd.read_html 更改了数字格式

如果不是数字,则无法比较数组值

如果我使用material-ui ButtonGroup创建自定义按钮,则无法正常工作

反应 - 如果 put value = {name},则无法输入

我更改了/ etc / passwd中的最后一行,我无法使用sudo

我无意中更改了左移键的功能,现在我无法使用它

如果用户更改密码 Laravel,则无法发送通知

无法弄清楚为什么如果我使用自定义标头排序,则无法使用背包。

DNS问题>如果禁用递归,则无法ping我的结果

如果之后我断开连接,则无法发布消息

从“闪亮”书签中排除所有输入

我从数组中使用randomElement更改了BackgroundImage,但其放大了,无法完美拟合

通过 sudo passwd root 更改了 root 密码,但我无法使用 root 登录

如果我想使用名为@current_page的变量,则无法使用site_prism进行最佳实践

如何更改数字输入的格式

如果我使用自定义ID在mongoDB中插入记录,则无法通过findOne()获取记录

Typescript:数组的函数查找正常,但如果我使用if语句检查它是否返回值,则无法正常工作

我使用MainCamera`ray来使GameObject碰撞,但是如果GameObject是Image,则无法碰撞Iamge,该怎么办?

Hazelcast:如果使用编程配置,则无法加入群集

如果语句类型不存在,则无法使用剃刀

Xt错误:如果使用默认的DISPLAY,则无法打开显示

如果没有“继承”属性,则无法使用“ CodeFile”属性