2016-08-31 9 views
1

С помощью простого ввода и DataList комбинации, как это:Выбор элемента DataList привязанного к входу с помощью клавиши ввода

<input type="text" class="form-control dropdown-input" id="standardInput" name="standardInput" tabindex="7" list="listForStandardInput"/> 
<datalist id="listForStandardInput"></datalist> 

Я хотел бы включить навигации с помощью клавиатуры и выбор. Когда фокус находится внутри элемента ввода, я могу использовать клавиши со стрелками вверх/вниз для выбора, но когда я нажимаю клавишу ввода, возникает форма.

Когда я использую JavaScript на основе jQuery, чтобы попытаться предотвратить отправку формы.

$(function() { 
    'use strict'; 
    $('#standardInput').on('keypress', function (e) { 
     if (e.keyCode === 13) { 
      e.preventDefault(); 
     } 
    }); 
}); 

Есть в любом случае я могу позволить использовать клавишу ввода, чтобы выбрать элементы DataList, который связан с входным элементом?

ответ

0

Попробуйте использовать keyup() вместо:

$("#standardInput").keyup(function (e) { 
    if (e.keyCode == 13) { 
     e.preventDefault();    
    } 
}); 
+0

Я тоже пробовал, но не кубиками. Я даже попытался применить событие keydown, но когда я нажал кнопку ввода на поле, форма все еще отправляется. –

+0

У меня был дополнительный обработчик событий на странице; после удаления конфликтующего обработчика событий этот код работал. Спасибо. –

+0

Рад помочь :) – DCruz22

1

Попробуйте использовать e.which вместо e.keyCode.

$(function() { 
    'use strict'; 
    $('#standardInput').on('keypress', function (e) { 
     if (e.which == 13) { 
      e.preventDefault(); 
     } 
    }); 
}); 
+0

Извините, но я попробовал, но форма еще не отправлена. –

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