[英]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.