Как изменить эту функцию, чтобы она могла использовать значение, полученное из db, вместо значений, указанных в массиве, используемом для генерации опций Select?
Эта функция позволяет мне различать значение по умолчанию для элементов выбора ( или «состояние по умолчанию», которые предварительно заданы для наиболее часто используемых параметров) , а также когда пользователь активно выбрал это значение, щелкнув элемент формы ( указывая на то, что они приняли активное решение оставить его установленным для этого значения) . Функция работает правильно в исходной форме, и я опубликовал скрипку с рабочим примером здесь: http://jsfiddle.net/chayacooper/JHAPp/4/
<script> $('select').focus(function () { var option = $(this).find("option[value*=default]"); option.attr('value', option.attr('value').replace(/_default/g, '')); }); </script> <select name="jeans"> <option value="$0">$0</option> <option value="$50_default" selected="selected">$50</option> <option value="$100">$100</option> <option value="$150">$150</option> </select>
У меня проблемы с настройкой функции для работы на странице учетной записи, где пользователи могут просматривать и редактировать свою информацию. При первоначальном использовании функции я мог вручную изменить значения параметров (т.е. заменить value="$50"
на value="$50_default"
) , однако на странице учетной записи используется массив $ options в функциях printSelectOptions ниже, создавая элементов, чтобы предварительно выбрать параметры, соответствующие информации db. Функция ниже предварительно выбирает значения, соответствующие информации в db (независимо от того, выбрал ли пользователь конкретное значение или если он все еще находится в состоянии «по умолчанию»), однако, поскольку ему необходимо удалить строку «_default», чтобы определить правильный вариант, сгенерированный массивом $options
он отправляет значение без строки «_default», независимо от того, было ли оно изменено.
Как я могу изменить функцию js для работы в тандеме с этим, чтобы, если пользователь не сосредоточился на элементе, он будет отправлять значение по умолчанию, если значение было выбрано из db в «состоянии по умолчанию» (с помощью «_default» 'строка)?
<?php try { $stmt = $conn->prepare("SELECT * FROM price WHERE user_id = :user_id"); $stmt->bindValue(':user_id', $user_id); $stmt->execute(); } catch(PDOException $e) {echo $e->getMessage();} $row = $stmt->fetch(); $search_default = array('_default'); $replace_default = array(''); $row_default = str_replace($search_default, $replace_default, $row); // This function selects the option matching the value in the db function printSelectOptions($dataArray, $currentSelection) { foreach ($dataArray as $key => $value) { echo '<option ' . (($key == $currentSelection) ? 'selected="selected"' : '') . ' value="' . $key . '">' . $value . '</option>'; } } ?> <select name="jeans"> <?php // Generates a <select> element with the options specified in this array $options = array("Null"=>"", "$0"=>"$0", "$50"=>"$50", "$100"=>"$100", "$150"=>"$150"); $selected = $row_default['jeans']; // Pre-selects the option matching the db information echo printSelectOptions($options, $selected); ?> </select>