2010-11-25 3 views
1

мой код, как этоткак авто нажмите клавишу "Tab", когда пользователь нажимает клавишу "-" (тире) в JavaScript

 function Tab(e) 
     { 
      var input = e.keyCode ? e.keyCode : e.charCode; 
      if ((input>=48 && input<=57) || (input==45)) 
      { 
       if (input==45) 
       { 
       //what should i do here? so, 
       //if user press "-", its auto tab to next textfield, 
        return false 
       } 
       else 
       return true; 
      } 
      else 
      return false; 
     } 

здесь мой HTML

<input type="text" name="a[]" maxlength='3' onkeypress="return Tab(event)"> 
<input type="text" name="a[]" maxlength='3' onkeypress="return Tab(event)"> 
<input type="text" name="a[]" maxlength='3' onkeypress="return Tab(event)"> 

Я искал в Google. но его возвращение аналогичной статьи, и это не то, что я ищу.
У меня есть много аналогичного текстового поля, поэтому невозможно включить имя следующего текстового поля в имя используемого имени массива.

извините, если мой английский плохо, но я надеюсь, вы понимаете, что я хочу

+0

просто отредактируйте, если есть неправильные слова – 2010-11-25 14:00:59

ответ

2

Вы можете сосредоточиться на следующий вход двойников таким образом:

HTML:

<input type="text" name="a[]" maxlength='3' onkeypress="return Tab(event, this)"> 
<input type="text" name="a[]" maxlength='3' onkeypress="return Tab(event, this)"> 
<input type="text" name="a[]" maxlength='3' onkeypress="return Tab(event, this)"> 

JS:

function Tab(e, inp) 
    { 
     var input = e.keyCode ? e.keyCode : e.charCode; 
     if ((input>=48 && input<=57) || (input==45)) 
     { 
      if (input==45) 
      { 
       //focus the next input if there is one 
       while(inp.nextSibling) 
       { 
        var inp=inp.nextSibling; 
        if(inp.nodeType===1 && inp.tagName.toLowerCase()=="input") 
        { 
         inp.focus(); 
         break; 
        } 
       } 
       return false 
      } 
      else 
      return true; 
     } 
     else 
     return false; 
    } 
0

Требуется 10 секунд, чтобы задать вопрос google. вы не можете эмулировать tab-keypress, но есть разные способы обхода (возможно, вы можете использовать массив, содержащий идентификаторы всех ваших полей, сохранить индекс, в котором вы находитесь, и нажатие тире, индекс фокусировки + 1 в вашем массиве (+ установка сохраненного индекса onfocus каждого текстового поля, чтобы отметить, если пользователь фокусирует поле, щелкнув его или нажав на кнопку))

+0

Уверены, вы можете * эмулировать * вкладку, даже без табуинда. Это не идеально, но см. [EmulateTab] (https://github.com/joelpurra/emulatetab) для обобщенного способа перемещения фокуса к следующему элементу - также [попробуйте простую демонстрацию] (http: //joelpurra.github. ком/emulatetab/пример/demo.html). – 2012-02-17 11:59:35

0

У меня была аналогичная проблема, где я хотел нажать + на numpad для перехода к следующему полю. Теперь я выпустил библиотеку, которая, я думаю, поможет вам. Однако это требует .

PlusAsTab: Плагин jQuery для использования клавиши numpad plus в качестве эквивалента ключа табуляции.

Так как вы хотите - (на обычных ключей, я думаю) вместо этого, вы можете настроить параметры. Узнайте, какой ключ вы хотите использовать с jQuery event.which demo.

JoelPurra.PlusAsTab.setOptions({ 
    // Use dash instead of plus 
    // Number 189 found through demo at 
    // https://api.jquery.com/event.which/ 
    key: 189 
}); 

// Matches all inputs with name "a[]" (needs some character escaping) 
$('input[name=a\\[\\]]').plusAsTab(); 

Вы можете try it out in the PlusAsTab demo и проверить enter-as-tab demo. Если вы хотите перейти на ключ -, вы можете позвонить JoelPurra.PlusAsTab.setOptions({key: 189}); с вашей консоли javascript.

Смежные вопросы