0

選択されたときにselectタグからオプションを削除するjavascript関数があります。

問題は、これらの関数の2つを使用する2つのselectタグがあることです。現在、selectタグに同じデータが含まれている場合があるため、最初のタグで選択すると、2番目のタグからも削除されます。

コードは次のとおりです。

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
}

2つのselectタグに異なるクラスを使用しようとしましたが、それでも役に立ちませんでした。

selectタグのオプションは動的に作成されるため、両方に同様のデータが含まれる場合があります。これは避けられません。

とにかくこの問題を回避する方法はありますか?

ありがとうございました!

4

1 に答える 1

2

この関数を呼び出すとonChangethisselect変更されます。次に、を使用findして、その選択内の要素を取得できます。

function connect()
{
    var $this = $(this);

    $this.find("option").show();

    if($this.val() != ""){ 
        $this.find("option[value='" + $this.val() + "']").hide();
    }    
}
于 2012-09-21T20:31:02.873 に答える