我有一个javascript函数,它会在选择时从select标记中删除一个选项。
现在的问题是我有2个选择标签使用其中2个功能,现在有时候select标签可能包含相同的数据,因此当在第一个标签上选择它时,它也将从第二个标签中删除。
代码是:
function connect()
{
$("option").show();
$(".selectbox").each(function(i) {
var obj = $("option[value='" + $(this).val() + "']");
if($(this).val() != "") obj.hide();
});
}
function to()
{
$("option").show();
$(".selectboxes").each(function(j) {
var objs = $("option[value='" + $(this).val() + "']");
if($(this).val() != "") objs.hide();
});
}
选择零件:
for($z=0;$z<$rows_updatedrow;$z++)
{
?>
<select id = "sc" name = "connect_array[]" class="input-select selectbox" onchange = "connect()">
<option value = "">--Select--</option>
<?php
for($zz=0;$zz<$rows_getconnect;$zz++)
{
$data_getconnect = mysql_fetch_assoc($query_getconnect);
$field_name_getconnect[] = $data_getconnect['field_name'];
$field_display_getconnect[] = $data_getconnect['field_display'];
$field_type_getconnect[] = $data_getconnect['field_type'];
if((($field_name_getconnect[$zz] == "friends_name" && $connect == 2) || $field_type_getconnect[$zz] == "email") && $z == 0){
$selected = "selected=selected";
}else{
$selected = "";
}
?>
<option value = "<?php echo $field_name_getconnect[$zz]; ?>" <?php echo $selected; ?>><?php echo $field_display_getconnect[$zz]; ?></option>
<?php
}
?>
</select>
connect to
<br/>
<?php
}
?>
</div>
<div class = "right">
<?php
for($a=0;$a<$rows_updatedrow;$a++)
{
?>
<select name = "to_array[]" class="input-select selectboxes" onchange = "to()">
<option class = "option" value = "">--Select--</option>
<?php
for($aa=0;$aa<$rows_getto;$aa++)
{
$data_getto = mysql_fetch_assoc($query_getto);
$field_name_getto[] = $data_getto['field_name'];
$field_display_getto[] = $data_getto['field_display'];
$field_type_getto[] = $data_getto['field_type'];
if((($field_name_getto[$aa] == "friends_name" && $to == 2) || $field_type_getto[$aa] == "email") && $a == 0){
$selected = "selected=selected";
}else{
$selected = "";
}
?>
<option class = "option" value = "<?php echo $field_name_getto[$aa]; ?>" <?php echo $selected; ?>><?php echo $field_display_getto[$aa]; ?></option>
<?php
}
尝试为两个选择标签使用不同的类,但仍然没有帮助。
select标签的选项是动态创建的,因此有时它们都包含相似的数据。这是无法避免的。
我还有解决这个问题吗?
谢谢!
答案 0 :(得分:2)
当调用此函数onChange
时,this
是已更改的select
。然后,您可以使用find
来获取该选择中的元素。
function connect()
{
var $this = $(this);
$this.find("option").show();
if($this.val() != ""){
$this.find("option[value='" + $this.val() + "']").hide();
}
}