2010-10-06 1 views
0

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

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

Любая помощь там?

EDIT
Ссылка на плакат-заполнитель: http://github.com/mathiasbynens/Placeholder-jQuery-Plugin

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

+0

Вы уже опробовали кнопку 'type =" reset "? Я не понимаю, вопрос, если вы говорите о коде jQuery. –

+0

Можете ли вы ссылаться на подключаемый модуль 'placeholder.js', который вы используете? –

+0

@David - PLS посмотреть мой EDIT. Спасибо – markimark

ответ

1

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

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

Вы должны очистить элементы без заполнителей с использованием Val («»);

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

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

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

+0

@Methodin - Бинго, это работает для меня. Будет делать еще несколько тестов, но выглядит очень хорошо. Спасибо, заставляет меня чувствовать себя очень счастливым в этот загруженный день. Cheers – markimark

+0

Я обновил его, если вы хотите сбросить ВСЕ элементы-заполнители без указания идентификаторов. Надеюсь, поможет. – methodin

+0

@Methodin - Я пробовал это, но на самом деле он не очищал какое-либо поле вообще. Что-то пропало....? – markimark

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

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

+0

Закрыть, но не идеально. Он возвращает только текст заполнителя поля, который я набрал в некотором тексте, прежде чем щелкнуть кнопку сброса. Текст-заполнитель всех других полей, которые я не нажал, до этого исчезнет. Позвольте себе понять? – markimark

0

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

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 
Смежные вопросы