使用依赖于PHP数组的选项进行选择
Select with options dependent of PHP Array
我有列表选择:
<select id="sel">
<option id="a1" value="volvo">Volvo</option>
<option id="a2" value="saab">Saab</option>
<option id="a3" value="mercedes">Mercedes</option>
<option id="a4" value="audi">Audi</option>
<option id="a5" value="volvo2">Volvo2</option>
<option id="a6" value="saab2">Saab2</option>
<option id="a7" value="mercedes2">Mercedes2</option>
<option id="a8" value="audi2">Audi2</option>
</select>
在PHP中,我有一个数组:
$array = array('a1', 'a4', 'a5', 'a8');
如何使用jQuery显示在PHP的$array中id选项为isset的select#sel only值中?
例如:
<select id="sel">
<option id="a1" value="volvo">Volvo</option>
<option id="a4" value="audi">Audi</option>
<option id="a5" value="volvo2">Volvo2</option>
<option id="a8" value="audi2">Audi2</option>
</select>
http://jsfiddle.net/TZCcA/
我不想为此使用PHP。我想使用jQuery。谢谢
使用php数组,您可以生成这样的选择器,并删除或隐藏不需要的选项。
您可以从服务器端呈现数组或选择器('#a1, #a4, #a5, #a8'
)本身,并在客户端使用它。
$('select option').not('#a1, #a4, #a5, #a8').remove();
如果它是一个数组,你可以试试这个。
$('select option').not('#' + array.join(',#')).remove();
工作演示-http://jsfiddle.net/TZCcA/1/
您可以这样做,但您需要将PHP数组回显到页面,以便jQuery可以使用它。
jQuery:
var ary = ['a1', 'a4', 'a5', 'a8']; // output your PHP array here
$('option').each(function() {
if ($.inArray($(this).attr('id'), ary)==-1) $(this).remove();
})
并且您希望在jQuery数组定义中回显您的PHP数组。类似这样的东西:
var ary = [
<?php
foreach($item in $array){
echo "'$item',";
}
?>
];
请注意,这将在末尾添加一个您不需要的额外逗号。用循环删除它是微不足道的,但我没有将其添加到这段代码中。
jsFiddle示例(没有PHP)。
您首先需要将数组转换为可用的格式,以便jQuery可以访问其值。我建议使用json_encode。
echo json_encode( array('a1', 'a4', 'a5', 'a8') );
输出为:
["a1","a4","a5","a8"]
因此,最好将其分配给一个变量。然后,您将循环浏览您的列表,并隐藏阵列中未找到的任何元素:
// Our array from PHP
var myArr = ["a1","a4","a5","a8"];
// Select all options, and filter
$("#sel option").filter(function(){
// Return items not found in our array
return $.inArray( this.id, myArr ) === -1;
}).remove();
正在演示:http://jsbin.com/ocebup/edit#javascript,html
ShankarSongoli也有一个很好的解决方案,它不需要过滤器,而是将值数组修改为选择器,并将其传递到$.not()方法中。查看他们对代码的回答:https://stackoverflow.com/a/9723034/54680
相关文章:
- 使用Javascript获取所选选项ID
- JQuery覆盖不更改单选选项
- 如何在从多选下拉列表中选择选项值时动态生成文本框
- 正在获取所选选项数据
- 从动态创建的html选择中选择所选选项
- 如何使用javascript函数在gridview中按行启用/禁用复选框
- Jquery:如何获取所选选项全文(带空格)
- 如何使用JS禁用表行,并在MYSQL中插入所选选项
- 使用纯javascript而非jquery使所选选项卡处于活动状态并保持非活动状态
- 在BootStrap菜单栏中为所选项目设置背景,类似于BootStrap中的父导航选项
- 如何根据所选选项值重定向表单操作
- 复选框/单选按钮-添加所选项目的总价
- 在参考行中显示多选选项
- 禁用/启用基于单选/选择选项所选Javascript的文本框
- 在允许用户进入下一部分之前,在表单验证中检查是否单击了某个选项(单选按钮)
- 如何根据最后选择的选项(单选按钮)使用 javascript 隐藏表单输入
- 当选择其中一个选项(单选)时,禁用某些输入元素
- 使用Javascript隐藏/取消隐藏带有文本输入的表行,具体取决于所选的下拉选项
- 如果我选择选择选项单选按钮应该被选中
- 需要加快jQuery在多个选择标记中选择选项行的速度