Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html ng:app="app">
<head>
<script src="http://code.jquery.com/jquery.min.js"></script>
<link href="http://getbootstrap.com/dist/css/bootstrap.css" rel="stylesheet" type="text/css" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
  
  <form ng:submit="submit()" ng:controller="FormController">
    <input type="text" class="form-control" placeholder="try to hit the enter key in here"/>
    <div class="btn btn-default" id="tap">
      Tap me
    </div>
    <div class="btn btn-primary" ui:submit>
    Submit form
    </div>
  </form>
  
</body>
</html>
 
// PART 1
// just a test controller
var app = angular.module('app', []);
app.controller('FormController', function($scope)
{
    $scope.submit = function()
    {
        alert('submit');
    }
    
    $scope.tap = function()
    {
      alert('thats a tap');
    }
    
    $('#tap').onTrigger(function(){
      $scope.tap();
    });
});
// PART 2
// this is a way to enable regular submit buttons in forms, to be "tapable" and trigger their actions without any delays.
app.directive('uiSubmit', function()
{
    // need this to make sure that you can submit your form by simply pressing the enter key in one of the input fields
    var invisibleSubmit = '<button type="submit" style="width: 0px; height: 0px; border: 0px; padding: 0px; margin: 0px;"></button>';
    return {
        restrict: 'A',
        link: function(scope, element, attrs)
        {
            element.parent().append(invisibleSubmit);
            
            // my custom way to trigger action on websites, that work as indendet on both - mobile and desktop devices
            element.onTrigger(function()
            {
                // retrieve registered event handler from your form
                var action = element.closest('form').attr('ng:submit');
                scope.$eval(action);
            });
        }
    };
});
// PART 3
// combine all the casual trigger events in to a single one
// currently hooks into the click, touchstart and the keydown[enter] events.
$.fn.onTrigger = function(callback)
    {
        return $.each(this, function()
        {
            var $this = $(this);
            var triggerKeys = [13];
            // attach events
            $this.bind('click keydown touchstart', function(e)
            {
                // handle the different event types
                switch(e.type)
                {
                    case 'keydown':
                        // and trigger on a valid key
                        if (triggerKeys.indexOf(e.keyCode) !== -1) callback()
                        break;
                    case 'touchstart':
                        e.stopPropagation();
                        e.preventDefault();
                        callback();
                        break;
                    default:
                        callback();
                        break;
                }
            });
        });
    }
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers