Сбросить форму, но не скрытые элементы - PullRequest
0 голосов
/ 29 апреля 2019

После и ajax submit Я хочу очистить элементы формы, исключая скрытые элементы:

 function resetForm(form) {

    for (var i = 0; i < form.elements.length; i++) {
        // ! do not clean hidden
        if (form.elements[i].type !== 'submit' || ...hidden...?  ) {
            form.elements[i].value = '';
        }
    }
}

Я не знаю, как спрятаться, и вторая проблема в Firefox после отправки, если я сбрасываю form.elements[i].value = '', запускаю аннулирование html5 (например, maxlength).

Ответы [ 3 ]

2 голосов
/ 29 апреля 2019

Другой подход заключается в том, чтобы использовать для этой цели встроенный метод reset().

Преимущество состоит в том, что он позволяет сбрасывать не только текстовые поля, но и снимать флажокполя, которые не были отмечены по умолчанию, отметьте те, которые были отмечены по умолчанию, сбросьте раскрывающийся список, что нельзя сделать с помощью form.elements[i].value = '';

Например:

form.reset();

function resetForm()
{
  let form = document.getElementById("MyForm");
  let hidden = document.getElementById("MyHidden");
  console.log("hidden value BEFORE reset : " + hidden.value);
  form.reset();
  console.log("hidden value AFTER reset : " + hidden.value);
}
<form id="MyForm">
  text 1
  <input type="text"><br />
  text 2
  <input type="text"><br />
  un-ticked checkbox
  <input type="checkbox"><br />
  ticked checkbox
  <input type="checkbox" checked><br />
  <select>
      <option>Value 1</option>
      <option>Value 2</option>
      <option>Value 3</option>
      <option>Value 4</option>
  </select><br />
  <input type="radio" id="val1" name="radio" value="1" checked>
  <label for="val1">Value 1</label><br />
  <input type="radio" id="val2" name="radio" value="2">
  <label for="val2">Value 2</label><br />
  <input type="radio" id="val3" name="radio" value="3">
  <label for="val3">Value 3</label><br />


  <input type="hidden" id="MyHidden" value="42">
  <button type="button" onclick="resetForm()">Reset</button>
</form>
2 голосов
/ 29 апреля 2019

Вы должны использовать оператор AND, потому что не следует сбрасывать ввод submit и hidden. Смотрите это:

for (var i = 0; i < form.elements.length; i++) {
    // ! do not clean hidden
    if (form.elements[i].type !== 'submit' && form.elements[i].type !== 'hidden'  ) {
        form.elements[i].value = '';
    }
}
0 голосов
/ 29 апреля 2019

Если для вашего скрытого элемента установлено значение с помощью <input type='hidden' value='afasd'>, вы можете использовать document.getElementById("myForm").reset();.

. Это приведет к сбросу формы и выполнению значений по умолчанию.

Редактировать 1:

Это даже работает, если вы измените скрытое поле с помощью js на другое значение.Он не будет сброшен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...