Как ограничить количество символов, принимаемых textInput в приложении Shiny
Я хотел бы, чтобы мое приложение Shiny (в R) ограничивало количество символов, которые пользователь может вводить в ответ на команду textInput.
Я могу попросить пользователя ограничить до 50 символов и сделать так, чтобы приложение отправляло ему сообщение, если он этого не делает, но было бы лучше, если бы ему было запрещено превышать лимит в первую очередь.
Предложения приветствуются.
2 ответа
Вы не можете добавить пользовательский атрибут в textInput, вы, вероятно, сможете написать пользовательскую функцию для генерации ввода, но это будет легче сделать в javascript:
shinyjs::runjs("$('#inputName').attr('maxlength', 50)")
Например, используя shinyBS
а также stringr
пакеты:
library(stringr)
library(shinyBS)
string <- "Destrier ipsum dolor cold weirwood, consectetur adipisicing elit, sed full of terrors incididunt green dreams always pays his debts. Ut in his cups sandsilk, no foe may pass spearwife nisi ut aliquip we do not sow. Duis aute warrior feed it to the goats death before disgrace maidenhead dog the seven pariatur. Rouse me not cupidatat non proident, suckling pig culpa qui officia deserunt mollit we light the way."
observe({
if(str_length(string)>50) {
newstring <-str_sub(string, end=50)
createAlert(session, inputID = "alert_anchor",
message = "You exceeded 50 character limit!",
dismiss = TRUE,
block = FALSE
append = TRUE)
updateTextInput(session, inputID, value = newstring)
}
})
# remember to create alert to shiny UI
# bsAlert(inputID = "alert_anchor")
Демонстрационная страница для глянцевых BBS: ShinyBS