Функция jQuery очищает форму и возвращает ее в состояние onLoad - PullRequest
0 голосов
/ 06 октября 2010

Для моей формы, управляемой jq, я ищу функцию, которая очищает мою форму и возвращает ее к исходному этапу, как это было при загрузке страницы, но без обновления всей страницы. Я использую заполнитель текста, и я создал стандартную кнопку сброса. В браузерах webkit все работает нормально. Если нажата кнопка сброса, форма возвращается в исходное состояние, показывая текст заполнителя НО в IE (в настоящее время используется 8), форма очищается, но текст заполнителя не возвращается. Любая идея, как я могу очистить форму, но вернуть мой заполнитель текста (я использую для этого плагин placeholder.js)? Я попробовал следующее, но это не работает:

$("#refresh").click(function() {
    $('#name, #email, #betreff, #nachricht').val('');
});

Есть ли какая-нибудь помощь?

РЕДАКТИРОВАТЬ
Ссылка на плагин-заполнитель: http://github.com/mathiasbynens/Placeholder-jQuery-Plugin

...and да, я говорю о том, чтобы использовать его сейчас с помощью jquery, потому что это невозможно сделано с помощью стандартной кнопки сброса HTML. Я имею в виду, что может, но не в IE. IE очищает форму и больше не отображает текст заполнителя. Браузер Webkit работает нормально с этой стандартной кнопкой сброса, снова показывая текст заполнителя. Сейчас я ищу решение, чтобы оно было одинаковым во всех браузерах.

Ответы [ 3 ]

1 голос
/ 06 октября 2010

Сделайте id = "refresh" просто стандартной кнопкой, чтобы не очистить всю форму.Вам нужно будет вручную «сбросить» элементы формы, которые используют заполнитель, с помощью функции, приведенной ниже:

$("#refresh").click(function() {
    $('#name, #email, #betreff, #nachricht').val('').placeholder();
});

Вам придется очистить элементы без заполнителей, используя val ('');

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

$("#refresh").click(function() {
    $("input[placeholder],textarea[placeholder]").val('').placeholder();
});

Это должно заменить всеэлементы input / textarea, поэтому любые другие элементы, которые вам придется добавить в селектор.

0 голосов
/ 16 июня 2012

Работал над похожей проблемой сегодня. Надеюсь, это поможет. Кредит идет Паоло Бергантино.

function resetForm($form) {
    $form.find('input:text, input:password, input:file, select, textarea').val('');
    $form.find('input:radio, input:checkbox')
         .removeAttr('checked').removeAttr('selected');
}

// to call, use:
resetForm($('#myform')); // by id, recommended
resetForm($('form[name=myName]')); // by name
0 голосов
/ 06 октября 2010
$("#refresh").click(function() {
    $('#name').val($('#name').attr('placeholder'));
    $('#email').val($('#email').attr('placeholder'));
    $('#betreff').val($('#betreff').attr('placeholder'));
    $('#nachricht').val($('#nachricht').attr('placeholder'));
});

Это работает?(Я не могу проверить здесь) Если это работает, вы можете использовать ярлыки с input и некоторыми селекторами.

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