2016-08-18 4 views
-2

У меня возникла проблема с использованием ключа «enter» в качестве события для добавления ввода из «формы» в список. Код ниже работает, но только когда я нажимаю комбинацию «cmd + enter», которая добавляет элемент в мой список и открывает новую вкладку с той же страницей.jQuery «обработчик события ввода»

То, что я хочу достичь, - это когда поле «форма» находится в фокусе, и я нажимаю клавишу «enter» (не комбинация «cmd + enter»), элемент добавляется в список, и никаких новых дополнительных открывается та же страница. (я тестирую мой код в Firefox 48.0 и Safari 9.1.2)

Вот HTML часть кода:

<form id="inputWindow"> Type-in here: <input type='text' name='input'></input></form> 

Вот JQuery часть кода.

$(document).ready(function() { 
$('#inputWindow').keypress(function(event) { 

if (event.which == 13){ 
var answer = $("input[name=input]").val(); 
    $('.list').append('<div class="item">' + answer + '</div>'); 
    }); 
}); 
+0

связывают представить событие в форме, как ввести будет триггер неявного представления – zzzzBov

+0

Возможно, вместо того, чтобы ранжировать вопрос, который вы могли бы реально помочь, и хотя бы сказать мне, как это сделать? –

+0

Мой комментарий имел в виду как комментарий. Если привязка обработчика отправки решает вашу проблему, то замечательно. если вы хотите знать, как это сделать, поиск в Google и ваши собственные исследования пройдут долгий путь. Ожидая, что я инвестирую свое время, потому что вы слишком ленивы, чтобы вкладывать свои деньги, - это грубо *, и такое поведение вообще не допускается здесь. – zzzzBov

ответ

0

На самом деле это гораздо проще в использовании .submit вместо .keypress события. Проблема перегрузки страницы легко разрешима, добавив onsubmit = "return false" в html-часть. Таким образом, код должен выглядеть следующим образом: HTML часть:

<form id="inputWindow" onsubmit="return false"> Type-in here: <input type='text' name='input'></input></form> 

JQuery часть (предполагая, что у вас есть $ (документ) .ready):

$('#inputWindow').submit(function() { 
var answer = $("input[name=input]").val(); 
    $('.list').append('<div class="item">' + answer + '</div>'); 
}); 
0

Вы отсутствуют некоторые });jsfiddle

$(document).ready(function() { 
    $('#inputWindow').keypress(function(event) { 

    if (event.which == 13){ 
     var answer = $("input[name=input]").val(); 
     $('.list').append('<div class="item">' + answer + '</div>'); 
    } 
    }); 
}); 
+0

Я просто забыл вставить его, проблема остается прежней. –

+0

@ thecapnamerica Отредактируйте это. –

+0

В моей js скрипке событие запускается только при нажатии enter без cmd. Когда я нажимаю cmd + enter, он не запускает событие –

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