Ответ 1
function resetForm(id) {
$('#' + id).val(function() {
return this.defaultValue;
});
}
пример без использования id:
Я хочу знать, как reset указать конкретное поле формы, используя jQuery.
Я использую следующую функцию:
function resetForm(id) {
$('#'+id).each(function(){
this.reset();
});
}
но сбрасывает все поля. Есть ли способ для reset определенных полей с использованием jQuery или JavaScript? Я хочу reset только определенное поле.
function resetForm(id) {
$('#' + id).val(function() {
return this.defaultValue;
});
}
пример без использования id:
Метод 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;
});
В 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'));
});
Данный 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;
}
});
});
Литература:
Моим подходом было бы рассмотреть три случая: поля на основе свободного ввода, поля на основе проверки и поля на основе выбора.
$(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>
.
Вы можете сделать (если вы планируете использовать метод reset() javascript):
function resetForm(id) {
document.getElementById(id).reset();
}
Нет необходимости в jQuery, поскольку метод "reset" является стандартным методом javascript