jquery - не работает клик по кнопке выбора варианта
Вложений: 4
Вопрос: jquery - не работает клик по кнопке выбора варианта $var.click(function(){ …
1. Исходно выводится текущий вариант (рис.1) Выбрать вариант Вложение 1472Вар 1 Вложение 1472Вар 2 Вложение 1473Текущий вариант Вложение 1472Вар 4 Остаток для текущего варианта: 150 штук Добавлено штук: Вложение 1475 Итого: 160 штук Рис. 1. Показан текущий вариант 2. При выборе другого варианта (отличного от текущего) должно быть (рис.2) а остается как на рис 1 Выбрать вариант Вложение 1472Вар 1 Вложение 1473Вар 2 Вложение 1472Текущий вариант Вложение 1472Вар 4 Квота для выбранного варианта: 50 штук/месяц Добавить штук: Вложение 1476 Итого: 50 штук/месяц Рис. 2. Показан вариант 2 3. При возврате к текущему варианту, вновь должно быть как на рис.1 Суть проблемы: В IE9 это не срабатывает. То есть при клике, например, по кнопке 'Вар 2' – ожидаемого изменения названий строк и соотв. значений (с первого клика) не происходит. Только со второго. В других браузерах: Google Chrome, Opera, Mozilla – работает как надо. Примечание: замечено, если вставить пустой alert() в коде member.js ( строка 66) – то работает и в IE9. Непонятно как alert-то влияет на это ?! Исходники в трех файлах member.js, index.php, memver.php ниже : Файл member.js // member.js - JavaScript Document // присоединяется к файлу mrmber.php. $(document).ready(function(){ var $item_sel = $("#item"); // указатель на "select" с id = "item" выбора числа доп. штук var $var = $("input:radio[name='var']"); var active = $("#active").val(); // текущ. вариант var curVar = active; var $quota = $("#quota-container"); var activeLim = parseInt($("#activeLim").val()); // лимит штук var selOptIndAct = parseInt($("#selOptIndAct").val()); // индекс, помеч. опции var itemValAct = parseInt($("#item option:selected").val()); // (знач. опции активного вар) var curItemVal = itemValAct; // текущее знач. (кол-во доп. штук) var curLim = activeLim; // текущее знач. (max штук по варианту) var curQuotaTotal = curItemVal + curLim; // итоговое знач limItemStr = $("#lim").val(); // знач.строки лимита штук var limItem = limItemStr.split(',') // массив знач. лимита штук var limItem_count = limItem.length; for(i=0; i<limItem_count; i++) { limItem[i] = parseInt(limItem[i]) } $item_sel.change(function() { // при изм. знач. select с id="item" curItemVal = $("#item option:selected").val(); // выбор кол-ва дополн. штук) curItemVal = parseInt(curItemVal); curQuotaTotal = curItemVal + curLim; // знач. итоговой квоты alert('curQuotaTotal = '+curQuotaTotal); $("#curQuotaSum").text(curQuotaTotal + ' предложений/месяц'); // добавляем текст с новым значением квоты }); $var.click(function(){ // клик по кнопке выбора варианта curVar = $(this).attr("value"); //название варианта if (curVar == active) { // #1, ЕСЛИ КЛИКНУТА РАДИОКНОПКА АКТИВНОГО варианта curLim = activeLim; // текущее знач. (max штук по варианту) varQuota = curLim +' штук'; // строка с знач. квоты штук curQuotaTotal = itemValAct + curLim; // знач. итоговой квоты для активн. варианта textQuota = 'Остаток для текущего варианта:' // текст для квоты штук textCurAddQuota = 'Добавлено штук:' // текст для добавляемых штук textCurQuotaSum = curQuotaTotal + ' штук:' // текст для суммарного знач. кол-ва штук для активного варианта $('#item option:eq('+selOptIndAct+')').attr('selected', 'selected'); // выбрать опцию, с индексом = selOptIndAct } else { // #1 ИНАЧЕ, ВЫБРАН НЕ АКТИВНЫЙ ВАРИАНТ $('#item option:first').attr('selected', 'selected'); //выбрать первую опцию с индексом = 0) switch (curVar) { case "Вар 1": curLim = limItem[0]; break; case "Вар 2": curLim = limItem[1]; break; case "Вар 3": curLim = limItem[2]; break; case "Вар 4": curLim = limItem[3]; break; } textQuota = 'Квота для выбранного варианта:' // строка с текстом для квоты штук textCurAddQuota = 'Добавить штук:' // строка с текстом для дополнительных штук varQuota = curLim+' штук/месяц'; // формируем строку со значением квоты штук вновь выбранного варианта curQuotaTotal = curLim; textCurQuotaSum = curQuotaTotal+' штук/месяц'; // строка с текстом для итогового (суммарного) значения кол-ва штук для вновь выбранного варианта } // end #1 // alert(); // при вставке пустого alert все работает как надо ?! $("#curQuotaContainer").text(textQuota); // вставляем строку с текстом для квоты штук (содержимое span с id = "curQuotaContainer") $("#curAddQuota").text(textCurAddQuota); // вставляем строку с текстом для добавляемых штук (содержимое span с id = "curAddQuota") $("#curQuota").text(varQuota); // planQuota вставляем строку со значением квоты штук действ. акт. варианта (содержимое span с id = "curQuota") $("#curQuotaSum").text(textCurQuotaSum); // textCurQuotaSum вставл. стр. с итоговым знач. квоты штук действ. акт. варианта (содержимое span с id = "curQuotaSum") }); // end $var.click(function() }); Файл index.php <?php $lim = array( 'Штук (квота/месяц)', 10, 50, 150, 250 ); // исх. лимит (для 'Вар 1','Вар 2','Вар 3','Вар 4') $limStr = $lim[1].",".$lim[2].",".$lim[3].",".$lim[4]; // строка со значениями лимита штук $textVar = array( 'Выбрать вариант', 'Вар 1', 'Вар 2', 'Вар 3', 'Вар 4'); $active = 'Вар 3'; // название активного варианта исходно $addItem = 10; // добавлено штук исходно для активного варианта $opt = array(0, 5, 10, 20, 30, 40, 50); // массив со значениями опций $opt_count = count($opt); // кол-во опций выбора пакетов дополнительных штук foreach($opt as $key => $val) { if ($addItem == $val) { // если кол-во добавл. штук равно значению текущей опции $selOpt[$key] = "selected"; // опцию выделяем $selOptIndAct = $key; // индекс помеченной опции активного варианта запоминаем } } switch ($active) { case "Вар 1": $activeLim = $lim[1]; $curVar[1]=$active; $member[1] = "checked"; break; case "Вар 2": $activeLim = $lim[2]; $curVar[2]=$active; $member[2] = "checked"; break; case "Вар 3": $activeLim = $lim[3]; $curVar[3]=$active; $member[3] = "checked"; break; case "Вар 4": $activeLim = $lim[4]; $curVar[4]=$active; $member[4] = "checked"; break; default: $active=""; } // end switch $totalLim = $activeLim + $addItem; // итоговый лимит штук активного варианта ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Варианты</title> <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script> </head> <body> <?php require_once("member.php"); ?> </body> </html> Файл member.php <script type="text/javascript" src="js/member.js"></script> <table style="width:30%; padding: 20px;"> <tr> <?php for($col = 0; $col < 5; $col++) { if ($col > 0) { $radio = "<input type='radio'".$member[$col]." name='var' value = '".$textVar[$col]."'/>"; } if ($curVar[$col] == $active && $active != "") { // если текущий вариант является уже выбранным и если он не пустой $text = " Текущий вариант"; } else { $text = " ".$textVar[$col]; } echo "<td>".$radio.$text."</td>"; } ?> </tr> </table> <div id="quota-container"> <!-- #1 --> <span id="curQuotaContainer"> Остаток для текущего варианта: </span> <span id="curQuota"> <?php echo $activeLim." шт."; ?> </span> <br /> <span id="curAddQuota"> Добавлено штук: </span> <span> <select name = 'item' id='item'><?php for ($i=0; $i < $opt_count; $i++) { echo "<option value = '".$opt[$i]."' ".$selOpt[$i]."> ".$opt[$i]; // выводим список опций шт. } ?> </select> </span> <br /> <span> Итого: <span id="curQuotaSum"> <?php echo $totalLim ?> штук </span> </span> </div> <!-- end #1 div#quota-container --> <form name='servData' action='servData.php' method='post'> <input type="hidden" name="active" id="active" value="<?php echo $active ?>" /> <!-- назв актив.варианта --> <input type="hidden" name="activeLim" id="activeLim" value="<?php echo $activeLim ?>" /> <!-- лимит шт. активного варианта --> <input type="hidden" name="addItem" id="addItem" value="<?php echo $addItem ?>" /> <!-- кол-во, доп. для активного действующего варианта, шт. --> <input type="hidden" name="selOptIndAct" id="selOptIndAct" value="<?php echo $selOptIndAct ?>" /> <!-- индекс помеченной опции активного варианта --> <input type="hidden" name="lim" id="lim" value="<?php echo $limStr ?>" /> </form> |
Часовой пояс GMT +3, время: 17:33. |