2013-04-18 9 views
6

Desidero attivare l'evento click di un pulsante quando si preme INVIO all'interno di un input e lo trovo piuttosto difficile con AngularJS.Pulsante di attivazione del fuoco in AngularJS

La mia opinione (semplificato, aggiornato):

<!doctype html> 
<html lang="en" ng:app="test"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Test</title> 
     <link rel="stylesheet" href="css/app.css" /> 
    </head> 
    <body ng-controller="TestController"> 
     <button ng-click="onButton1Click()" class="btn1">Click Me</button> 
     <button ng-click="onButton2Click()" class="btn2">Don't click me</button> 
     <script src="lib/jquery/jquery.js"></script> 
     <script src="lib/angular/angular.js"></script> 
     <script src="js/testcontroller.js"></script> 
    </body> 
</html> 

mio controller per questo punto di vista:

'use strict'; 

angular.module('test', []) 
.controller('TestController', ['$scope', 
    function($scope) { 

     $scope.onButton1Click = function() { 
      alert("Hello"); 
     } 

     $scope.onButton2Click = function() { 
      $('.btn2').click(); 
     } 
}]) 

ho semplificato tutto il codice per questo. Quando clicco su btn2 ottengo questo errore

$ applicano già in corso

No, non posso chiamare direttamente $scope.onButton1Click(), devo simulare il btn1 clic.

+0

è l'app: click-watched = "onButtonClick()" una direttiva personalizzata che hai scritto? – ganaraj

+0

Sì, è una direttiva personalizzata – ali

+0

puoi inserire il tuo codice in un plunker? – ganaraj

risposta

3

Questo mi ci è voluto un po 'per capire (un sacco di violini).

<form id="nowsorting" ng-submit="getData(sc_user)">Now sorting the Soundcloud likes of <input type="text" ng-model="sc_user"><input type="submit" value="Sort"></form>

Fai un modulo e l'uso ng-presentare al fuoco l'evento (probabilmente una funzione).

Quindi creare due input (uno è "testo" e l'altro "invia").

Quindi premere Invio deve attivare l'evento/funzione ng-submit.

1

penso, è sufficiente chiamare il $ scope.onButtonClick()

prega di controllare this Plunker

$scope.onKeyPress = function($event) { 
    if ($event.keyCode == 13) { 
     $scope.onButtonClick(); 
    } 
}; 
+1

Questo non fa "clic" sul pulsante, ma esegue semplicemente lo stesso codice javascript che è collegato al clic del pulsante.è leggermente diverso dal momento che nessun ascoltatore aggiuntivo che hai su quel clic sul pulsante non verrà attivato. – Randyaa

13

Lei ha citato

fuoco evento click di un pulsante quando si preme INVIO all'interno un input

Quindi se è un sa Supponiamo che tu possa avere un modulo che preferirei usando come mostrato sotto.

<form ng-submit="clickEventFunction()"> 
    <input type="text"/> 
    <button type="submit">Click</button> 
</form> 

Nota tipo di pulsante deve essere presentare.

+0

questa è la risposta corretta – JT703

Problemi correlati