5 回答
您可以使用原始 javascript 更改选择元素选项,但您可能需要稍微更改您的实现。只需使用 id 属性访问 select 元素,然后确定要选择的 option 元素的索引。
function selectDD(option = 0) { //pass the options index you want into the function
//Change "SelectBoxID" to match your id attribute
var selectBox = document.getElementById("SelectBoxID");
selectBox.options[option].selected = true;
}
编辑
我想我完全误解了你想要做什么。如果我做对了,您想要做的是单击其中<div>
包含一些文本的 a,然后它将在与您的文本匹配的框中<option>
选择适当的. 希望我理解这就是你想要做的。如果是这样,那么试试这个功能:<select>
<div>
function selectDD(div, select) {
var match = div.innerHTML;
var found = false;
var ndx = false;
for(var i = 0. i < select.options.length; i++) {
if(found) {
break;
}
if(match.localeCompare(select.options[i].innerHTML) == 0) {
ndx = i;
found = true;
}
}
if(found) {
select.options[ndx].selected = true;
}
}
接下来,您需要将<div>
带有文本的<select>
元素和要操作的元素传递给函数。
<div id="<?php echo $product_id; ?>" onclick="selectDD(this, document.getElementById('bto_item_options_<?php echo $group_id; ?>')" ><?php echo get_the_title( $product_id ); ?></div>
那应该可以为您提供所需的东西。希望这会有所帮助,或者至少能让你朝着正确的方向前进。
试试这个:
您不需要对所有 div 标签触发 onclick 功能:
<select id="bto_item_options_<?php echo $group_id; ?>" name="bto_selection_<?php echo $group_id; ?>" class="selectDD">
Options...
</select>
<div class="temp" id="<?php echo $product_id; ?>"><?php echo get_the_title( $product_id ); ?></div>
<script type="text/javascript">
$('.temp').bind('click',function(){
var btnid = $(this).attr('id');
$('.selectDD option').each(function(){
if($(this).attr('id') == btnid ){
$(this).attr('selected','selected');
}
});
});
</script>
谢谢。
我认为您想要的是在选择框元素之外选择带有按钮的选择选项。那么你可以在任何带有 Jquery 的 html 上使用它:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(document).ready(function () {
$('body').on('click', '.btn', function(){
var id = $(this).attr("id");
$('.selectbox').children('option').each(function (key, option) {
if(id == $(option).attr('value')){
$(option).attr('selected', 'selected');
}
else{
$(option).removeAttr('selected');
}
});
});
});
</script>
</head>
<body>
<select class="selectbox">
<option value="2">Something</option>
<option value="3">BlaBlaBla</option>
<option value="7">bobobobob</option>
<option value="9">JOOOOPIE</option>
</select>
<button class="btn" id="2">Something</button>
<button class="btn" id="3">BlaBlaBla</button>
<button class="btn" id="7">bobobobob</button>
<button class="btn" id="9">JOOOOPIE</button>
</body>
</html>
对此进行了测试,它将按您的意愿工作。
您可以将 group id 值与产品 id 一起传递,并通过按 id 获取元素而不是按类来设置值...
<div id="<?php echo $product_id; ?>" onclick="selectOptionDD(<?php echo $group_id; ?>,<?php echo $product_id; ?>)" ><?php echo get_the_title( $product_id ); ?></div>
<script type="text/javascript">
function selectOptionDD(groupId,title) {
$("#bto_item_options_"+groupId).val(title);
}
</script>
希望它有所帮助...
到目前为止我所了解的,这段代码没有问题
function selectOptionDD(title) {
$(".selectDD").val(title);
}
正如你所说的那样,以下行不起作用。
<?php echo selected( $selected_value, $product_id, false ); ?>
和你要求的
有没有办法在元素之外使用这个函数?
因此,当您单击 div 元素时,它将调用selectOptionDD
javascript 中的函数,但是当页面加载时,它不会显示可能保存在数据库中的最后一个选定项目,并且当前它在$selected_value
php
变量中?如果是这种情况,我可以建议您在页面末尾运行以下代码。
<script>
$(document).ready(function () {
// check if $selected_value is not an alien value
<?php if ($selected_value != null) { // or what ever in your case != '' or != 0 ?>
// save the value of $selected_value in to a javascript variable
var _selected_value = '<?php echo $selected_value; ?>';
// call your javascript function that actually calls onclick.
selectOptionDD( _selected_value );
<?php } ?>
});
</script>
我希望这会有所帮助,我正确理解了你的问题..