Подтвердить что ты не робот

Как reset указать конкретное поле формы с помощью jQuery

Я хочу знать, как reset указать конкретное поле формы, используя jQuery.

Я использую следующую функцию:

function resetForm(id) {
    $('#'+id).each(function(){
        this.reset();
    });
}

но сбрасывает все поля. Есть ли способ для reset определенных полей с использованием jQuery или JavaScript? Я хочу reset только определенное поле.

4b9b3361

Ответ 1

function resetForm(id) {
    $('#' + id).val(function() {
        return this.defaultValue;
    });
}

пример без использования id:

http://jsfiddle.net/vYWdm/

Ответ 2

Метод reset() влияет на всю форму, по дизайну, на reset только конкретные элементы input, предполагая, что существует reset предыдущий вход element after each input`:

$('button.reset').click(
    function(){
        var input = $(this).prev('input:first');
        input.val(''); // assuming you want it reset to an empty state;
    });

JS Fiddle demo

В reset input в исходное состояние, тогда сначала я рекомендую сохранить исходное значение в атрибуте data-* для запоминания:

$('input').each(
    function(){
        $(this).attr('data-originalValue',$(this).val());
    });

$('button.reset').click(
    function(){
        var input = $(this).prev('input:first');
        input.val(input.attr('data-originalValue'));
    });

JS Fiddle demo

Данный HTML-код похож на следующий (в котором элементы input сгруппированы вместе):

<form action="#" method="post">
    <fieldset>
        <input value="something" />
        <button class="reset">Reset the input</button>
    </fieldset>
    <fieldset>
        <input type="checkbox" name="two"  />
        <input type="checkbox" name="two" checked />
        <input type="checkbox" name="two"  />
        <button class="reset">Reset the input</button>
    </fieldset>
    <fieldset>
        <input type="radio" name="three" checked />
        <input type="radio" name="three" />
        <button class="reset">Reset the input</button>
    </fieldset>
</form>

Следующий jQuery возвращает reset элементы input в состояние загрузки страницы:

$('button.reset').click(
    function () {
        $(this).prevAll('input').val(function(){
            switch (this.type){
                case 'text':
                    return this.defaultValue;
                case 'checkbox':
                case 'radio':
                    this.checked = this.defaultChecked;
            }
        });
    });

JS Fiddle demo.

Литература:

Ответ 3

Моим подходом было бы рассмотреть три случая: поля на основе свободного ввода, поля на основе проверки и поля на основе выбора.

$(set_of_fields).each(function() {
  // Don't bother checking the field type, just check if property exists
  // and set it
  if (typeof(this.defaultChecked) !== "undefined")
    this.checked = this.defaultChecked;
  if (typeof(this.defaultValue) !== "undefined")
    this.value = this.defaultValue;

  // Try to find an option with selected attribute (not property!)
  var defaultOption = $(this).find('option[selected]');
  // and fallback to the first option
  if (defaultOption.length === 0)
    defaultOption = $(this).find('option:first');
  // if no option was found, then it was not a select
  if (defaultOption.length > 0)
    this.value = defaultOption.attr('value');
});

Изменить: я заметил, что это не будет работать с полями <select multiple>.

Ответ 4

Вы можете сделать (если вы планируете использовать метод reset() javascript):

function resetForm(id) {
   document.getElementById(id).reset();
}

Нет необходимости в jQuery, поскольку метод "reset" является стандартным методом javascript