2012-07-05 37 views
0

所有, 我有以下选择框:确定值是否在另一个选择字段已经选定

<select class="event_selection" name="Event[]" id="Event_<?php echo $i; ?>" > 
    <option value="original">Select Event...</option> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
</select> 

我有一对夫妇的我的这些形式。当用户从下拉列表中选择一个值时,我想确保在另一个具有相同类的选择中尚未选择该值。

有没有简单的方法来做到这一点?如果是这样,请你指点我正确的方向?

谢谢!

+1

注册一个'改变'选择ta上的事件gs,当选择一个选项时,将其从其他下拉列表中删除。根据需要还原以前删除的选项。 “disabled”属性应该很好地工作。 – TheZ 2012-07-05 21:59:36

+0

“*当用户从下拉列表中选择一个值时,我想确保该值没有在另一个具有相同类别的选择上被选中。*”。如果它是? – 2012-07-05 22:03:28

+0

@ŠimeVidas如果它已经被选中,我想只给一个div写一个小小的警告,说他们已经在之前的选择中选择了这个值。 – user1048676 2012-07-05 22:08:25

回答

1

我做了它,这样就可以不选择任何值的两倍:

var $coll = $('.event_selection').on('change', function() { 
    $coll.children().prop('disabled', false); 
    $coll.each(function() { 
     var val = this.value; 
     if (val === 'original') return; 
     $coll.not(this).children('[value="' + val + '"]').prop('disabled', true); 
    }); 
}); 

现场演示:http://jsfiddle.net/QVbQ6/2/


var $coll = $('.event_selection'); 

$('#timeline_table').on('change', '.event_selection', function() { 

    // my code 
    $coll.children().prop('disabled', false); 
    $coll.each(function() { 
     var val = this.value; 
     if (val === 'original') return; 
     $coll.not(this).children('[value="' + val + '"]').prop('disabled', true); 
    }); 

    // your other code... 

}); 
+0

谢谢,我喜欢这个解决方案。我已经有了一个这样的功能,我不知道如何将您的解决方案并入我现有的功能。我怎么能更新我目前的功能来做到这一点?我使用的是jQuery而不是$,因为我使用的是wordpress(仅供参考)。我创建了一个JS小提琴,它已经有了我的初始解决方案:http://jsfiddle.net/VxgmB/1/ – user1048676 2012-07-05 22:16:57

+0

@ user1048676顺便说一句,你不必使用'jQuery'而不是''''。只需在准备处理程序中传递'$'变量:'jQuery(function($){your_code;});' – 2012-07-05 22:25:13

+0

@ user1048676首先将包含所有这些SELECT框的jQuery对象保存到一个变量中:'var $ coll = $ ('.event_selection');'。一旦你这样做了,你几乎可以将我的答案中的函数体复制粘贴到你的“更改”处理程序中(例如在开始时)。 – 2012-07-05 22:30:13

1
$("select.event_selection").change(function(){ 
    if ($(this).val() == $("select.event_selection").not(this).val()) { 
     // match found 
     alert('You have already selected this value'); 
     $(this).val('original'); //sets this back to original   
    } 
}); 
+0

谢谢,但它不是我想要比较的每个选择。我只想比较一下,看看它是否已经选择了一个具有event_selection类的选择 – user1048676 2012-07-05 22:10:21

0
$(".event_selection").change(function(){ 
if($(".event_selection:selected[value=" + $(this).val() + "]").length > 1) { 
    // there are more than one select with this class and same value, do whatever you need 
} 
}); 
相关问题