如何修改此函数,以便它可以使用从数据库中获取的值,而不是用于生成 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"
),但是帐户页面在下面的 printSelectOptions 函数中使用 $options 数组生成元素的选项,以便预先选择与数据库信息匹配的选项。下面的函数预先选择与数据库中的信息匹配的值(无论用户是否专门选择了该值,或者它是否仍处于“默认状态”),但是因为它需要删除“_default”字符串才能识别由$options
数组生成的正确选项,它正在提交不带“_default”字符串的值,无论它是否已更改。
如何修改 js 函数以与此协同工作,以便如果用户没有关注元素,如果该值是从处于“默认状态”的数据库中获取的,它将提交默认值(使用 '_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>