[英]R shiny: how to clear an input field with a default value using shinyjs?
我正在尝试使用 shinyjs 包来清除和禁用在我的 shiny 应用程序中具有默认值的输入字段。 清除/禁用按钮似乎有效。 但是,当我点击提交时,默认值仍在提交(见下图)。 如何让它提交 NULL 或空字符串?
library(shinyjs)
library(shiny)
# this is supposed to change the input value to null
jsCode <- 'shinyjs.clear_input = function(params){
var defaultParams = {
input_id : null
};
params = shinyjs.getParams(params, defaultParams);
var el = $("#" + params.input_id);
el.val(null);}'
shinyApp(
ui = fluidPage(
useShinyjs(),
extendShinyjs(text = jsCode, functions = c("clear_input")),
textInput("input", label = "input", value = "default text"),
actionButton("clear", label = "clear/disable"),
actionButton("submit", "submit"),
tags$div(id="result")
),
server = function(input, output) {
observeEvent(input$clear, {
js$clear_input("input")
disable("input")
})
observeEvent(input$submit, {
insertUI("#result", ui=renderText(input$input))
})
}
)
就个人而言,我对 javascript 不是很满意,所以我尽量避免使用并在 R 中使用。您可以使用updateTextInput
来更新textInput
中的值。
library(shiny)
library(shinyjs)
shinyApp(
ui = fluidPage(
useShinyjs(),
textInput("input", label = "input", value = "default text"),
actionButton("clear", label = "clear/disable"),
actionButton("submit", "submit"),
tags$div(id="result")
),
server = function(input, output, session) {
observeEvent(input$clear, {
updateTextInput(session, "input", value = "")
disable("input")
})
observeEvent(input$submit, {
insertUI("#result", ui=renderText(input$input))
})
}
)
坚持使用 Javascript 并遵循 Ronak 的想法使用updateTextInput()
library(shinyjs)
library(shiny)
# this is supposed to change the input value to null
jsCode <- 'shinyjs.clear_input = function(params){
var defaultParams = {
input_id : null
}
;
params = shinyjs.getParams(params, defaultParams);
var el = $("#" + params.input_id);
el.val(null);}'
shinyApp(
ui = fluidPage(
useShinyjs(),
extendShinyjs(text = jsCode, functions = c("clear_input")),
textInput("input", label = "input", value = "default text"),
actionButton("clear", label = "clear/disable"),
actionButton("submit", "submit"),
tags$div(id="result")
),
server = function(input, output) {
observeEvent(input$clear, {
updateTextInput(inputId="input", value=js$clear_input("input"))
disable("input")
})
observeEvent(input$submit, {
insertUI("#result", ui=renderText(input$input))
})
}
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.