2013-12-09 28 views
1

我有一个酒店的预订表单,客户可以选择与哪个房间共享一个房间。 每一行代表一个客人的名字,并有一个下拉菜单(),其中所有其他客人的身份证号码作为选项。删除相同类别的所有选择框中的选项,但单击该选项时除外

当第一排的客人决定与客人id = 3共享一个房间时,我想排一个下拉框来显示一个3,第三行显示一个和所有其他行,有1个和3个选项从他们的选择框中删除。

我已经得到了下面的代码,但.not(this),不工作,任何指针,为什么会受到热烈赞赏。

这里是形式

<?php 
    for($a=0;$a<15;$a++) 
    { 
     echo " 
<tr id=".($a+1)."><td>".($a+1)."</td> 
    <td><select name='title[]'> 
     <option value='Ms'>Ms</option> 
     <option value='Mrs'>Mrs</option> 
     <option value='Mr'>Mr</option> 
     <option value='Dr'>Dr</option> 
     </select></td> 
    <td><input type='text' name='firstname[]' size='10'></td> 
    <td><input type='text' name='lastname[]' size='10' ></td> 
    <td><input type='text' name='email[]'></td> 
    <td><input type='text' name='passport_no[]'></td> 
    <td><input type='date' name='dob[]' size='10'></td> 
    <td><select name='room_pref[]' class='room_pref'> 
     <option value='TWIN'>twin</option> 
     <option value='DOUBLE'>double</option> 
     <option value='SINGLE'>single</option> 
     </select></td> 
    <td><select name='share_w[]' class='share'>"; 
    for($b=1;$b<16;$b++) 
    { 
     echo "<option value=".$b.">".$b."</option>"; 
    }  

    echo "<option value ='ALONE'>Alone</option> 
</select></td> 
    <td><input type='text' name='diet[]'></td> 
    <td><input type='text' name='allergies[]'></td> 
</tr>"; 

?>

这里是我的jQuery

$('.share').change(function(){ 
    var shareW=$(this).val(); 
    $(".share option[value="+shareW+"]").not(this).remove(); 
}): 
+0

什么是您的实际代表(最小/ [SSCCE](http://sscce.org/))HTML?你的PHP执行服务器端,它发送给JavaScript的浏览器来处理什么? –

回答

3

this这里指selectoption,你需要不上.share收集申请和不在option

尝试

$(".share").not(this).children("option[value="+ this.value +"]").remove(); 

你也可以避免单击处理程序并再次创造.share集合。

var $share = $('.share'); 
$share.change(function(){ 
    $share.not(this).children("option[value="+ this.value +"]").remove(); 
}); 
+0

感谢不仅是答案,更正了我的理解 –

+0

@MarkGilchrist不客气.. :) – PSL

+0

您最近编辑的优点是什么? –

相关问题