JQuery Autocomplete: при нажатии возврата форма отправляется - PullRequest
4 голосов
/ 03 февраля 2011

Я использую плагин jQuery Autocomplete.

// 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>

Это отлично работает.Однако, когда я нажимаю «ввод», чтобы выбрать элемент из результатов автозаполнения, форма отправляется.Почему это может происходить?

Я посмотрел на 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, который есть у меня в другом месте на странице, мешает?

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Я бы рекомендовал добавить событие нажатия клавиши в элемент автозаполнения и вернуть false из этого. Это не повлияет на вашу возможность отправить остальную часть формы позже.

0 голосов
/ 03 февраля 2011

Вы можете отключить отправку при входе, подключив обработчик событий для form.submit: $ ("form"). Submit (function () { вернуть ложь; });

...