Как очистить форму? - PullRequest
18 голосов
/ 17 мая 2011

Например, у меня есть такая форма:

<form method='post' action='someaction.php' name='myform'>

<input type='text' name='text1'>
<input type='text' name='text2'>

<input type='checkbox' name="check1">Check Me

<textarea rows="2" cols="20" name='textarea1'></textarea>

<select name='select1'>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

<input type='reset' value='Reset' name='reset'>
<input type='submit' value='Submit' name='submit'>

</form>

Когда я нажимаю Reset, она очищает все поля.Но если я заполняю некоторые поля, используя параметры URL, а затем нажимаю Reset, он очищает только те поля, которые я ввожу после перезагрузки формы.

Как очистить все поля, если некоторые поля уже были заполнены во время загрузки формы.

Ответы [ 9 ]

21 голосов
/ 17 мая 2011

Как отмечали другие, я думаю, вам следует пересмотреть необходимость пусто формы.Но, если вам действительно нужна эта функциональность, это один из способов сделать это:

Простой Javascript:

function resetForm(form) {
    // clearing inputs
    var inputs = form.getElementsByTagName('input');
    for (var i = 0; i<inputs.length; i++) {
        switch (inputs[i].type) {
            // case 'hidden':
            case 'text':
                inputs[i].value = '';
                break;
            case 'radio':
            case 'checkbox':
                inputs[i].checked = false;   
        }
    }

    // clearing selects
    var selects = form.getElementsByTagName('select');
    for (var i = 0; i<selects.length; i++)
        selects[i].selectedIndex = 0;

    // clearing textarea
    var text= form.getElementsByTagName('textarea');
    for (var i = 0; i<text.length; i++)
        text[i].innerHTML= '';

    return false;
}

Обратите внимание, что я закомментировал случай, в котором я очищаю hiddenвходы.В большинстве случаев в этом нет необходимости.

Чтобы это работало, вам нужно вызвать функцию из обработчика onclick кнопки (или каким-либо другим способом), например, так:

<input type='reset' value='Reset' name='reset' onclick="return resetForm(this.form);">

Вы можете проверить все это здесь на jsFiddle .

Если вы используете jQuery в своем проекте, вы можете сделать это с гораздо меньшим количеством кода (и не нужно менятьHTML):

jQuery(function($) { // onDomReady

    // reset handler that clears the form
    $('form[name="myform"] input:reset').click(function () {
        $('form[name="myform"]')
            .find(':radio, :checkbox').removeAttr('checked').end()
            .find('textarea, :text, select').val('')

        return false;
    });

});

Также обратите внимание, что я не очищаю значения скрытых входов, флажков и переключателей.

Играйте с этим здесь .

7 голосов
/ 20 октября 2014

В JQuery просто вы можете использовать,

$("#yourFormId").trigger('reset'); 
6 голосов
/ 17 мая 2011

Вам придется очистить их все через javascript (или очистить его на стороне сервера).

Кнопка reset будет только сбрасывать элементы формы к их начальному значению - если это было определенное значение, этово что это будет сброшено.

1 голос
/ 31 июля 2015

Самый простой способ очистить форму - использовать тег HTML

.
<input type="reset" value="Reset">

Пример:

<form>
  <table>
    <tr>
      <td>Name</td>
      <td><input type="text" name="name"></td>
    </tr>
    <tr>
      <td>Reset</td>
      <td><input type="reset" value="Reset"></td>
    </tr>
  </table>
</form>
1 голос
/ 22 июля 2011

Если вы используете jQuery, код будет намного проще:

$('#my-form').not(':button, :submit, :reset, :hidden').val('').removeAttr('checked').removeAttr('selected');

Вы также можете удалить: hidden из селектора .not, если вы также хотите очистить скрытые поля.

0 голосов
/ 28 января 2017

Вы можете сделать что-то похожее на это в JS и вызвать из onclick внутри вашей кнопки:

function submit() {
  $('#fieldIdOne').val('');
  $('#fieldIdTwo').val('');
}

А потом в вашем HTML-файле:

<button id="submit" onclick="submit(); return false">SIGN UP</button>

Если вам случится использовать это решение с Firebase, оно фактически ничего не отправит в базу данных, если вы не добавите return false сразу после вызова.

0 голосов
/ 27 ноября 2016

Я только что натолкнулся на этот вопрос и использовал <a> для облегчения очистки формы путем перезагрузки страницы.Элемент <a> легко отобразить в виде кнопки.

Например,

<a href="?" class="btn btn-default">Clear</a>

С помощью?для атрибута href <a> перезагрузит страницу с сервера без ее отправки.

Я предпочитаю решения, которые не зависят от JavaScript, так что, надеюсь, это кому-нибудь пригодится.

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

Я суммировал некоторые предложения, используя jQuery, чтобы дать более полное решение вопроса:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Demo Forms</title>
        <script src="http://code.jquery.com/jquery-1.11.1.js"></script>
    </head>
    <body>

        <form method='post' action='someaction.php' name='myform'>

            <input type='text' name='text1'>
            <input type='text' name='text2' value='preset value'>

            <input type='checkbox' name="check1">Check Me

            <textarea rows="2" cols="20" name='textarea1'></textarea>

            <select name='select1'>
              <option value="volvo">Volvo</option>
              <option value="saab">Saab</option>
              <option value="mercedes">Mercedes</option>
              <option value="audi">Audi</option>
            </select>

            <input type='button' value='Reset' name='reset' onclick="return clearForm(this.form);">
            <input type='submit' value='Submit' name='submit'>

            <script>
                function clearForm(form) {
                    var $f = $(form);
                    var $f = $f.find(':input').not(':button, :submit, :reset, :hidden');
                    $f.val('').attr('value','').removeAttr('checked').removeAttr('selected');
                }
            </script>
        </form>
    </body>
</html>

Обратите внимание, что я добавил включение jquery lib в раздел head и добавил обработчик onclick для кнопки Reset. Наконец, я добавил код javascript, основываясь на ответах некоторых других ответов здесь.

Я также добавил предустановленное значение в одно текстовое поле. Функция val('') не очищает такое поле, поэтому я также добавил attr('value','') в последнюю строку скрипта, чтобы очистил и такие значения по умолчанию .

0 голосов
/ 17 мая 2011

Используя JavaScript, дайте форме идентификатор 'myform':

document.getElementById ( 'MyForm') сброса ();. * +1004 *

...