2013-02-27 17 views
5

Mam małą aplikację angularjs, którą opracowałem dla iPadów (przeglądarki Safari). Na górze znajduje się pole tekstowe, które jest używane jako filtr na powtórzeniu ng. Co staram się osiągnąć, to zamknąć klawiaturę na iPadzie, gdy ktoś kliknie przycisk "GO". Widziałem sposób na zamknięcie klawiatury jest rozmycie elementu wejściowego Hide The iPad Keyboard By Hitting the Return Keydziała po textbox.blur po kliknięciu enter przy użyciu angularjs

Korzystam z biblioteki AngularUI, więc uruchamiam zdarzenie onKeyUp i wykrywam klawisz Enter.

To jest html dla pola tekstowego. Używam zdarzenie ui-przyciśnięcie zadzwonić keypressCallback

<input ng-model="query" type="text" id="query" placeholder="product name or number" class="big radius" autocomplete="off" ui-keypress="{13:'keypressCallback($event)'}"> 

Poniżej znajduje się wersja nacięcia w javascript, który zawiera tylko funkcję keypressCallback

var GunnersenApp = angular.module("GunnersenApp", ['ui']); 

GunnersenApp.controller(
'SwatchListCtrl', 
function ($scope, $http) {  

    $scope.keypressCallback = function($event) { 
     alert('enter'); 
     $event.preventDefault(); 
    };  

} 
); 

Próbowałem ustawić ostrość na dokumencie i ciało, które zacierało pole tekstowe, ale nie miałem żadnego sukcesu.

Wersja rozwój co pracuję nad jest pod następującym adresem URL: http://thejonesmobile.com/gunnersen/

z góry dzięki Gav

Odpowiedz

11

Dlaczego nie używacie input.blur()? Zmieniłem twój kod na:

$scope.keypressCallback = function($event) { 
    $event.target.blur(); 
}; 

I zadziałało.

+0

dzięki stert. Nie wiedziałem o $ event.target –

+0

Anytime. To tylko wstrzyknięty oryginał [event] (https://developer.mozilla.org/en-US/docs/DOM/event). –

0

Proste rozwiązanie:

document.formName.fieldName.blur(); 
Powiązane problemy