Shiny button observer update: ignoring clicks on disabled buttons

In earlier posts, I’ve explained how to add a bit of JavaScript/jQuery code to your project that lets you have one Shiny observeEvent() handler for all your button and anchor clicks. This week I needed disabled buttons, which are easy to do visually by adding the Bootstrap disabled class to the button. But the buttons still responded to being clicked.

Continue reading “Shiny button observer update: ignoring clicks on disabled buttons”

Adding anchors to our Shiny button observer

In my previous post, I demonstrated a JavaScript / jQuery event handler that waits for button clicks and sends the id of the button that was clicked to a single observeEvent() in Shiny. In this post I’m going to improve that code while also extending it to include anchor tags (<a id="xxx">). Anchor tags are typically used to create links and include an href attribute that holds the URL of the linked document.

Continue reading “Adding anchors to our Shiny button observer”

One observer for all buttons in Shiny using JavaScript / jQuery

One of the profound limitations of Shiny is the way it supports buttons. Buttons are based on a function called actionButton(). When a button is clicked, Shiny reports the click on input$button_id. Every button has to have a unique id, which means that each button also has to have its own observer to watch for a click. But what if you want to do something like this:

Continue reading “One observer for all buttons in Shiny using JavaScript / jQuery”

How to get Shiny on the server and JavaScript in the browser talking to each other

On our server we’re programming in R with a variety of add-on packages, primarily Shiny. Users, on the other hand, are all viewing our site using browsers, which run the programming language JavaScript. This article is about how to use a Shiny command to send a message to the user’s browser, telling it to run a JavaScript function. I’ll also include how to get that JavaScript function to send a message back to Shiny (it will appear as a reactive in the input$ list).

Continue reading “How to get Shiny on the server and JavaScript in the browser talking to each other”