JQuery, выберите все параметры кнопку не работает в IE, но работает в Firefox - PullRequest
2 голосов
/ 24 ноября 2010

где-то в моем коде cgi, я генерирую это:

my $PARAMETER_HTML .= "<select name='parameters' id='parameters' size='10' multiple='multiple'>";
foreach my $values (sort @PARA_VALUES)
{
    $PARAMETER_HTML .= "<option value=\"" . $values . "\" >" . $values  . "</option>";
}
$PARAMETER_HTML .= qq|</select>|;

Где-то позже, я генерирую кнопку:

<button id="select_all1"><b>Select All<br>Parameters</b></button>       

Где-то позже, я генерирую этот код скрипта:

$("#select_all1").click(function() {
    $("#parameters").each(function(){ $("#parameters option").attr("selected","selected"); });                
});

Работает в Firefox, но не в IE.Есть ли исправление для IE (проверено на версии 7)?

Ответы [ 3 ]

2 голосов
/ 24 ноября 2010

Прежде всего, вам не нужен этот $("#parameters").each цикл;он ничего не делает, так как #parameters ссылается на один элемент (элемент select).

Во-вторых, минимальная версия, приведенная ниже, прекрасно работает для всех браузеров, включая IE7.Я бы проверил источник вашей страницы, чтобы убедиться, что ваш сгенерированный HTML-код правильный, а затем попытался бы свести все к минимальной работающей странице.Затем аккуратно положите вещи обратно.

<html>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
   $("#select_all1").click(function() {
      $("#parameters option").attr("selected","selected");
   });
});
</script>
<button id="select_all1"><b>Select All<br>Parameters</b></button><br />

<select id="parameters" multiple="multiple">
  <option>one</option>
  <option>two</option>
  <option>three</option>
</select>

</html>
1 голос
/ 24 ноября 2010

Я бы дважды проверил выходной HTML, так как ваш код работает правильно в FF4 и IE8. (У меня не работает IE7 для тестирования.) Вот ваш код, работающий в jsFiddle: http://jsfiddle.net/CXQxT/

Кстати - Вы можете упростить свой JQuery. Нет необходимости в .each ().

$('#select_all1').click(function() {
    $('#parameters option').attr('selected', 'selected');
});

Обновлен jsFiddle здесь: http://jsfiddle.net/TWBRQ/

1 голос
/ 24 ноября 2010

Проблема, с которой я бы подумал, заключается в использовании <button> Я заменил его на <div>, и он отлично работает в IE8 по крайней мере.

Демо: http://jsfiddle.net/wtw4e/

Edit:

Ну, другой ответ говорит, что он отлично работает с <button>, поэтому вполне может быть обычной проблемой IE быть гораздо более суетливым по поводу корректности кода, чем другие браузеры.

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