Хотите html-форму отправить, чтобы ничего не делать

Я хочу, чтобы html-форма ничего не делала после ее отправки.

action="" 

не годится, потому что это приводит к перезагрузке страницы.

в основном я хочу, чтобы функция ajax вызывалась всякий раз, когда нажата кнопка или кто-то нажимает "enter" после ввода данных. Да, я мог бы удалить тег формы и добавить просто вызов функции из события onclick кнопки, но я также хочу, чтобы функциональность "hitting enter" не получала все hackish.

8 ответов


С помощью return false; в javascript, который вы вызываете с помощью кнопки отправки, вы можете остановить отправку формы.

в основном, вам нужен следующий HTML:

<form onsubmit="myFunction(); return false;">
<input type="submit" value="Submit">
</form>

затем поддерживающий javascript:

<script language="javascript"><!--
function myFunction() {
    //do stuff
}
//--></script>

при желании вы также можете иметь определенные условия, позволяющие скрипту отправить форму:

<form onSubmit="return myFunction();">
<input type="submit" value="Submit">
</form>

в паре с:

<script language="JavaScript"><!--
function myFunction() {
    //do stuff
    if (condition)
        return true;

    return false;    
}
//--></script>

Он также работает:

<form id='my_form' action="javascript:myFunction(); return false;">

как о

<form id="my_form" onsubmit="the_ajax_call_function(); return false;">
 ......
</form>

вы можете использовать следующий HTML

<form onSubmit="myFunction(); return false;">
  <input type="submit" value="Submit">
</form>

<form id="my_form" onsubmit="return false;">

достаточно ...


как часть события onclick кнопки возвращает false, что остановит отправку формы.

ie:

function doFormStuff() {
    // ajax function body here
    return false;
}

и просто вызовите эту функцию при нажатии кнопки отправки. Есть много разных способов.


используйте jquery. Возможно, поместите div вокруг ваших элементов из формы. Затем используйте preventDefault (), а затем сделайте свои вызовы ajax


<form action='javascript:functionWithAjax("search");'>
  <input class="keyword" id="keyword" name="keyword" placeholder="input your keywords" type="search">
  <i class="iconfont icon-icon" onclick="functionWithAjax("search");"></i>
</form>

<script type="text/javascript">
function functionWithAjax(type) {
  // ajax action

  return false;
}
</script>