2015-11-16 2 views
0

не дублируетсяКак я могу изменить поведение клавиши ввода с angularjs

У меня есть поиск с входом, кнопкой и другой кнопкой для переключения расширенного поиска:

<form role="form"> 
    <div class="form-group "> 
    <input type="text" id="search-input" ng-model="searchTerm" autocomplete="off" autofocus ng-keydown="onKeyDownEnter($event)" /> 
    <div class="btn-group " > 
     <button type="button" ng-click="search()" class="btn btn-default">Submit</button> 
     <button class="btn dropdown-toggle downArrow" data-toggle="dropdown"> 
     <span class="caret"></span> 
     <span class="sr-only">Desplegar menú</span> 
     </button> 
     <div id="subMenu" class="dropdown-menu advanced-search"> 
      <div class="form-group"> 
      <label for="usr">Find documents with...</label> 
      <input type="text" class="form-control" ng-model="adSearch.q1"> 
      </div> 
      <div class="form-group"> 
      <label for="usr">And</label> 
      <input type="text" class="form-control" ng-model="adSearch.q2"> 
      </div> 
      <div class="form-group"> 
      <label for="usr">Or</label> 
      <input type="text" class="form-control" ng-model="adSearch.q3"> 
      </div> 
      <div class="form-group"> 
      <label for="usr">Not</label> 
      <input type="text" class="form-control" ng-model="adSearch.q4"> 
      </div> 
     </div> 
    </div> 
    </div> 
</form> 

Когда я нажимаю клавишу ввода, кнопка расширенного поиска принимает действие. Я хотел бы знать, что я могу сделать для обычного поиска (кнопка fisrt) принимает действие, когда я нажимаю клавишу ввода.

Я не хочу использовать jquery или javascript, мне нужно сделать это с помощью angularjs, я думал, что смогу сделать это с помощью только css, но похоже, что я не могу.

я могу использовать это:

$scope.onKeyDownEnter = function($event){ 
    if ($event.keyCode === 13) { 
    console.log("yeeeee"); 
    } 
}; 

Но это также переключает «подменю», я не знаю, как отключить поведение этого «Подменю», когда я нажмите клавишу ввода.

Дополнительная информация:

Here i have the subMenu before press enter key

Here i have the subMenu after press enter key

+1

Возможный дубликат [Trigger нажатием кнопки с JavaScript на клавишу ввода в текстовом поле] (http://stackoverflow.com/questions/155188/trigger-a-button-click-with-javascript-on-the-enter-key-in-a-text-box) – Raviteja

+1

Вы не можете гнездятся друг с другом, это неверный HTML. – CBroe

+0

не дубликат, я забыл сказать, что мне нужно делать в Angularjs, потому что я думал, что мне просто нужен css, чтобы решить эту проблему. – vict

ответ

1

Я не знаю, почему этот код был причиной этой проблемы:

<button class="btn dropdown-toggle downArrow" data-toggle="dropdown"> 
    <span class="caret"></span> 
    <span class="sr-only">Desplegar menú</span> 
    </button> 

Если у вас есть эта проблема, просто добавить «кнопку» Тип = так:

<button type="button" class="btn dropdown-toggle downArrow" data-toggle="dropdown"> 
      <span class="caret"></span> 
      <span class="sr-only">Desplegar menú</span> 
     </button> 

И все будет работать нормально

0

Как вы использовали autofocus во входной строке поиска вы можете использовать JQuery, чтобы сосредоточиться на своей обычной кнопки поиска:

$(document).ready(function(){ 
    $('#search-button').blur(function(){ $('#save-btn').focus(); }); 
}); 

Ps: просьба указать ID вашей кнопке save-btn, чтобы получить эту работу.

+0

Могу ли я сделать что-нибудь подобное с Angularjs? – vict

+0

@vict: Я не вижу рекомендуемого решения. Но если вы хотите придерживаться AngularJS, вы можете использовать ngFocus и ngBlur в своем элементе .Создайте функцию с именем focusToSubmit() в js. и присвоить этой функции атрибуту ng-blur . в функции focusToSubmit() вы можете вызвать .focus() для обычной кнопки отправки. – jimish

+0

Да, я уже пробовал это, но я не знаю, как поймать событие нажатием любого решения @Jimish? – vict

0

Вы пытались применить фокус? Как это:

$('#myButton').focus(); 
Смежные вопросы