2014-04-08 134 views
0

它再次大声笑。从jquery和php剩余的选择框中删除选项

我正面临一个非常具体的问题,我需要一只手。我没有真正准备好重构一些其他人做的完整代码,他们问我是否有办法确保,在3个选择框中,我们可以从其他人中删除,无论哪个被选中,作为以避免有3个选择框,具有相同的值。

这里是你给我的代码。

$questions = array (
    'question1' => 'question1', 
    'question2' => 'question2', 
    'question3' => 'question3', 
    'question4' => 'question4', 
    'question5' => 'question5' 
); 

那么一些HTML

<table> 
    <tr> 
     <td> 
      <?php echo $this->Form->input('pregunta1', array('options' => $questions/*, 'empty' => 'Seleccione una pregunta'*/));?><br> 
      <?php echo $this->Form->input('respuesta1', array('required' => 'required')); ?> 
     </td> 
     <td> 
      <?php echo $this->Form->input('pregunta2', array('options' => $questions/*, 'empty' => 'Seleccione una pregunta'*/));?><br> 
      <?php echo $this->Form->input('respuesta2', array('required' => 'required')); ?> 
     </td> 
     <td> 
      <?php echo $this->Form->input('pregunta3', array('options' => $questions/*, 'empty' => 'Seleccione una pregunta'*/));?><br> 
      <?php echo $this->Form->input('respuesta3', array('required' => 'required')); ?> 
     </td> 
    </tr> 
</table> 

我需要的是什么,这是一种从每一个选择框,如果甚至有可能被其他2选择使用jQuery取其问题删除。

非常感谢您的时间和精力!

问候,

何塞Chafardet

回答

0

我可以瘦使用jQuery这样做的是将每个选项的值设置为相同ID的最简单方法。

<select id="option1"> 
    <option value="1">Text</option> 
    <option value="2">Text2</option> 
    <option value="3">Text3</option> 
</select> 

<select id="option2"> 
    <option value="1">Text</option> 
    <option value="2">Text2</option> 
    <option value="3">Text3</option> 
</select> 

<select id="option3"> 
    <option value="1">Text</option> 
    <option value="2">Text2</option> 
    <option value="3">Text3</option> 
</select> 

用jquery你需要挂钩.change()事件。 http://api.jquery.com/change/

,并在每次选择的一个改变到不同的选项时,都会从其他2使用一个.remove()函数http://api.jquery.com/remove/

$('#option1').change(function(){ 
      var id = $(this).val(); 

      var hld = $('#option2'); 
      hld.find('option[value=' + id + ']').remove(); 
}) 


$('#option2').change(function(){ 
     var id = $(this).val(); 

     var hld = $('#option3'); 
     hld.find('option[value=' + id + ']').remove(); 
}) 

你要知道,这是非常粗略的代码中删除选项,但应该给你一个如何做到这一点的想法。如果需要,也可以使用.append()函数将选项添加回来。

+0

谢谢Cenron,事实上这是为了消除问题,即使有人只是决定改变问题,这些问题也不会被重读,这是非常糟糕的。 – JLChafardet

+0

我看,所以你可以做的是,而不是使用删除,你可以将显示设置为无。因此,例如hld.find('option [value ='+ id +']')。css('display','none');然后在想要再次显示时将其设回“阻止”。 – Cenron