форма без действия и где ввод не перезагружает страницу - PullRequest
79 голосов
/ 30 ноября 2009

Я ищу самый удобный способ создать форму HTML, в которой нет кнопки отправки. Это само по себе достаточно просто, но мне также нужно помешать перезагрузке формы при выполнении операций, подобных отправке (например, нажав Введите в текстовом поле).

Ответы [ 7 ]

170 голосов
/ 29 октября 2012

Вы хотите включить action="javascript:void(0);" в форму, чтобы предотвратить перезагрузку страницы и поддерживать стандарт HTML.

41 голосов
/ 30 ноября 2009

Добавьте обработчик onsubmit к форме (либо через обычный js, либо через jquery $ (). Submit (fn)) и верните false, если не удовлетворены ваши конкретные условия.

Если вы не хотите, чтобы форма отправлялась когда-либо - в таком случае, почему бы просто не пропустить атрибут 'action' в элементе формы?

9 голосов
/ 03 февраля 2010

Просто добавьте это событие в ваше текстовое поле. Это предотвратит отправку при нажатии Enter, и вы можете добавить кнопку отправки или вызов form.submit () при необходимости:

onKeyPress="if (event.which == 13) return false;"

Например:

<input id="txt" type="text" onKeyPress="if (event.which == 13) return false;"></input>
5 голосов
/ 01 декабря 2015

Когда вы нажимаете ввод в форме, естественным поведением формы является ее передача, чтобы остановить это поведение, которое не является естественным, вы должны запретить его отправку (поведение по умолчанию) с помощью jquery:

$("#yourFormId").on("submit",function(event){event.preventDefault()})
2 голосов
/ 01 февраля 2015

идея:

<form method="POST" action="javascript:void(0);" onSubmit="CheckPassword()">
    <input id="pwset" type="text" size="20" name='pwuser'><br><br>
    <button type="button" onclick="CheckPassword()">Next</button>
</form>

и

<script type="text/javascript">
    $("#pwset").focus();
    function CheckPassword()
    {
        inputtxt = $("#pwset").val();
        //and now your code
        $("#div1").load("next.php #div2");
        return false;
    }
</script>
0 голосов
/ 17 марта 2015

Первый ответ - лучшее решение:

Добавление обработчика onsubmit в форму (либо через обычный js, либо через jquery). $ (). submit (fn)) и вернуть false, если не указаны ваши конкретные условия мет.

Более конкретно с jquery:

$('#your-form-id').submit(function(){return false;});

Если вы не хотите, чтобы форма отправлялась, когда-либо - в таком случае, почему не пропустить атрибут 'action' в элементе формы?

Написание расширений Chrome является примером того, где у вас может быть форма для ввода данных пользователем, но вы не хотите, чтобы она отправлялась. Если вы используете action = "javascript: void (0);", код, вероятно, будет работать, но у вас будет эта проблема , где вы получите ошибку о запуске встроенного Javascript.

Если вы полностью пропустите действие, форма перезагрузится, что также нежелательно в некоторых случаях при написании расширения Chrome. Или, если бы у вас была веб-страница с каким-то встроенным калькулятором, где пользователь мог бы ввести данные и нажать «Рассчитать» или что-то в этом роде.

0 голосов
/ 09 марта 2015

Два способа решения:

  1. Значением действия формы является "javascript: void (0);".
  2. добавить прослушиватель событий нажатия клавиш для формы, чтобы предотвратить отправку.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...