Кнопка ввода как SUBMIT - PullRequest
3 голосов
/ 04 августа 2011

Мне нужно отправить форму, используя клавишу ввода, однако мне нужно использовать КНОПКУ вместо SUBMIT в качестве типа, чтобы страница не обновлялась. Как я могу заставить свою КНОПКУ действовать как ОТПРАВИТЬ и исполнять всякий раз, когда кто-то нажимает на клавишу ввода?

<form>
<input type=text ...>
<input type=button ...>
</form>

Много информации, которую я нашел об этом, упоминает Netscape / IE / много устаревшего материала.

Это мой вывод HTML, я хочу скрыть кнопку отправки и использовать ENTER:

http://i.stack.imgur.com/Ohepe.png

Ответы [ 3 ]

3 голосов
/ 04 августа 2011

с включенным Javascript

<input type="button" onclick="this.form.submit()" ... /> 

должно работать

2 голосов
/ 04 августа 2011

Я должен использовать КНОПКУ вместо ОТПРАВИТЬ в качестве типа, чтобы страница не обновлялась

Нах. Используйте обычную кнопку submit, которая обновляет страницу. (И в идеале, для доступности сделайте так, чтобы это работало!) Затем добавьте прогрессивное улучшение, чтобы заменить действие отправки формы чем-то более плавным, когда JS доступен. Используйте return false (или event.preventDefault() в модели событий DOM 2), чтобы остановить отправку формы в этом случае.

<form id="foo" method="POST" action="dosomething.script">
    ...
    <input type="submit" value="Do something"/>
</form>

document.getElement('foo').onsubmit= function() {
    beginAJAXSubmission();
    return false;
};

Поймать событие submit формы обычно лучше, чем пытаться подобрать click для кнопок, потому что оно всегда срабатывает, когда форма обычно отправляется, в том числе при нажатии клавиш Enter. click при первой кнопке отправки в форме обычно будет срабатывать при нажатии клавиши Enter, но в некоторых случаях (в зависимости от количества элементов управления в форме и от того, какой браузер это используется), когда это не так произойдет, и в результате вы сможете получить форму.

1 голос
/ 04 августа 2011

как сказал другой, вы должны использовать Javascript. Я рекомендую JQuery Framework.

Но я не понимаю, что такое освежить?

Обычным способом является нажатие кнопки «Отправить», и ваша форма будет отправлена ​​через запрос на сервер. Сервер обрабатывает данные и возвращает ответ (HTML / JSon..etc). Этот ответ обычно перенаправляется на страницу результатов (чтобы избежать известного предупреждения о повторной публикации при обновлении).

Теперь, если ваша форма представляет собой лишь небольшую часть страницы большего размера, вы можете использовать ajax, чтобы опубликовать небольшую форму, а затем получить результат и обновить DOM.

Все это говорит о том, что ничто не мешает вам использовать тип отправки для кнопки, на самом деле это лучший способ сделать так, чтобы ваш ключ ввода не действовал по отношению к этому действию. Все, что вам нужно сделать, это использовать Jquery и перехватить отправку вашей формы и сделать вызов ajax вместо обычного пути.

вы найдете множество примеров использования JQuery, поскольку это, вероятно, наиболее используемая среда JavaScript.

Надеюсь, это поможет

...