IE не очищает выбранное значение - PullRequest
2 голосов
/ 28 июня 2011

Я использую простой кусок jquery для очистки содержимого выбора в форме, но во всех версиях iE выбор не очищается. это нормально в FF, просто не делать это в IE. Кто-нибудь может увидеть, где я ошибся с этим? я разместил соответствующую часть кода. спасибо

UPDATE:

я пытаюсь добиться, когда форма отправляется, входные данные очищаются, и опция выбора / возвращается в состояние по умолчанию, как при загрузке страницы.

Ответьте, если это поможет кому-либо еще: $ ("select"). Prop ('selectedIndex', 0);

/*Show submitted*/
//$(".done").show(500).slideUp(300).delay(800).fadeIn(400);
$(".done").html("<div id=\"boxSuccess\">Message sent successfully!</div><br />");
/*Clear input values*/
$("input").val("");
/*Clear slelect values*/
$("select").val("");
$(".done").fadeIn(4000).fadeOut(4000);

Ответы [ 3 ]

6 голосов
/ 28 июня 2011

Элемент одиночного выбора <select> не может быть "очищен";некоторые <option> в нем должны показываться.Что вы можете сделать, чтобы убедиться, что (например) отображается первая опция:

$('select').get(0).selectedIndex = 0; // or $('select').prop('selectedIndex', 0);

edit - взгляд на источник jQuery (1.5.2) говорит мне, что когдаискомое значение не может быть найдено как значение (или, если нет атрибута «значение», текст) опции, тогда для «selectedIndex» устанавливается значение -1.Быстрый jsfiddle должен показать, какой эффект это имеет в IE.

редактировать снова - быстрый тест предполагает, что IE не обращает внимания на то, что «selectedIndex» являетсяустановите -1. ​​

еще Здесь - соответствующий отчет об ошибке jQuery.Лично я не думаю, что это действительно ошибка в случае выпадающего списка.Для множественного выбора я мог видеть аргумент, хотя всегда можно сделать:

$('select option').prop('selected', false);

, чтобы отменить выбор всего в множественном выборе.Однако не работает для элемента с одним выбором, потому что, опять же, это не имеет смысла.Элемент будет всегда приводить к тому, что значение одной из его опций будет отправлено вместе с формой, поэтому его действительно нельзя "очистить", если одна из опций не имеет пустого значения.

еще больше - Если один из ваших параметров имеет атрибут (или свойство) defaultSelected, то вы можете сделать его выбранным с помощью:

$('select option').each(function() {
  this.selected = this.defaultSelected;
});
2 голосов
/ 28 июня 2011

Потому что вы устанавливаете значение для коллекции объектов, я думаю. Я бы сделал это так:

$("select").add("input").each(function(){
     $(this).val("");
});

вместо

/*Clear input values*/
$("input").val("");
/*Clear slelect values*/
$("select").val("");

Это допустимо (очевидно), только если у вас есть опция со значением = '', и это то, что вы хотите сбросить на выбор. Как

 <option value=''>Select a value</option>
1 голос
/ 28 июня 2011

$("select").val(""); следует просто установить как выбранный, в зависимости от того, какой элемент имеет "" в качестве значения.Если вы действительно хотите удалить предметы, вам нужно что-то вроде $("select option").remove();

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