Я использую плагин jQuery Autocomplete.jQuery Autocomplete: Hitting return отправляет форму
// I'm not sure if there's a better way to do this
var base_url = window.location.href.slice(0, window.location.href.indexOf('/bar'));
$('.foo-widget').find('input:first-child').autocomplete(base_url + "/api/baz?format=newline");
Разметка:
<ul class="foo-widget">
<li>
<input value="" autocomplete="off" class="ac_input"><input value="" autocomplete="off" class="ac_input"><button>Add</button>
</li>
</ul>
Это прекрасно работает. Однако, когда я нажимаю «enter», чтобы выбрать элемент из результатов автозаполнения, форма отправляется. Почему это может произойти?
Я посмотрел в jquery.autocomplete.js и увидел, что следующее выполняется:
case KEY.RETURN:
if(selectCurrent()) {
// stop default to prevent a form submit, Opera needs special handling
event.preventDefault();
blockSubmit = true;
return false;
}
break;
не event.preventDefault()
и blockSubmit = true
должны остановить форму от представления? Возможно ли, что JS-код, который у меня есть в другом месте на странице, мешает?
У вас может быть другая ошибка javascript, которая возникает до того, как она попадет в код preventDefault(). Есть ли у Firebug какие-либо ошибки? –
Возврат false блокирует отправку. – Luke
Сколько форм у вас на этой странице? –