Edit an input binding

  1. Check the needed changes.
$(function() {

  // Wait for the `shiny:connected` event, so that the `Shiny` JS object exists
  $(document).on('shiny:connected', function(event) {
  
    // Unbind all inputs
    Shiny.unbindAll();
    
    // Extend the binding and edit its content
    // Access the binding registry
    $.extend(Shiny
      .inputBindings
      .bindingNames['shiny.actionButtonInput']
      .binding, {
        reset: function(el) {
         $(el).data('val', 0);
        },
        subscribe: function(el, callback) {
          $(el).on('click.actionButtonInputBinding', function(e) {
            var $el = $(this);
            var val = $el.data('val') || 0;
            $el.data('val', val + 1);

            callback();
          });

          $(el).on('change.actionButtonInputBinding', function(e) {
            debugger;
            callback();
          });

        }
      });
      
    // Apply the new changes with Shiny.bindAll()
    Shiny.bindAll();
  });

  $('#button1').on('click', function() {
    var $obj = $('#button2');
    var inputBinding = $obj.data('shiny-input-binding');
    var val = $obj.data('val') || 0;
    inputBinding.setValue($obj, val + 10);
    $obj.trigger('change');
  });

  $('#reset').on('click', function() {
    var $obj = $('#button2');
    var inputBinding = $obj.data('shiny-input-binding');
    inputBinding.reset($obj);
    $obj.trigger('change');
  });
});