211

使用 jQuery,您如何检查选择菜单中是否选择了一个选项,如果没有,则将其中一个选项指定为已选择。

(选择是在我刚刚继承的应用程序中使用迷宫般的 PHP 函数生成的,所以这是一个快速修复,当我了解这些时:)

4

18 回答 18

272

虽然我不确定你想要完成什么,但这段代码对我有用。

<select id="mySelect" multiple="multiple">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">Third</option>
  <option value="4">Fourth</option>
</select>

<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length) {
    $("#mySelect option[value='3']").attr('selected', 'selected');
  }
});
</script>
于 2008-09-29T17:42:11.273 回答
30

无需为此使用 jQuery:

var foo = document.getElementById('yourSelect');
if (foo)
{
   if (foo.selectedIndex != null)
   {
       foo.selectedIndex = 0;
   } 
}
于 2008-09-29T16:57:01.493 回答
15

这个问题很老并且有很多观点,所以我将在那里抛出一些东西,这将有助于我确定的一些人。

要检查一个选择元素是否有任何选定的项目:

if ($('#mySelect option:selected').length > 0) { alert('has a selected item'); }

或检查选择是否未选择任何内容:

if ($('#mySelect option:selected').length == 0) { alert('nothing selected'); }

或者,如果您处于某种循环中并想要检查是否选择了当前元素:

$('#mySelect option').each(function() {
    if ($(this).is(':selected')) { .. }
});

检查循环中是否未选择元素:

$('#mySelect option').each(function() {
    if ($(this).not(':selected')) { .. }
});

这些是执行此操作的一些方法。jQuery 有许多不同的方式来完成相同的事情,因此您通常只需选择看起来最有效的一种。

于 2013-09-13T19:27:24.950 回答
12

lencioni 的回答是我推荐的。您可以('#mySelect option:last')使用“”更改选项的选择器以选择具有特定值的选项#mySelect option[value='yourDefaultValue']更多关于选择器

如果您在客户端上广泛使用选择列表,请查看此插件: http ://www.texotela.co.uk/code/jquery/select/ 。如果您想查看更多使用选择列表的示例,请查看源代码。

于 2008-09-29T17:51:55.963 回答
9

这是我更改所选选项的功能。它适用于 jQuery 1.3.2

function selectOption(select_id, option_val) {
    $('#'+select_id+' option:selected').removeAttr('selected');
    $('#'+select_id+' option[value='+option_val+']').attr('selected','selected');   
}
于 2009-10-30T12:25:17.840 回答
7
<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#mySelect option:selected").length)
   $("#mySelect").val( 3 );

});
</script>
于 2009-12-09T11:59:56.667 回答
3

我已经遇到了提到的texotela 插件,它让我可以这样解决它:

$(document).ready(function(){
    if ( $("#context").selectedValues() == false) {
    $("#context").selectOptions("71");
    }
});
于 2008-09-29T18:06:40.827 回答
3

简单的!默认应该是第一个选项。完毕!这将导致您使用不显眼的 JavaScript,因为不需要 JavaScript :)

不显眼的 JavaScript

于 2009-12-04T16:27:10.693 回答
2

查看元素的selectedIndexselect顺便说一句,这是一个普通的 DOM 事情,不是特定于 JQuery 的。

于 2008-09-29T16:51:26.933 回答
2

这是一个我发现有效的快速脚本......结果被分配给一个标签。

$(".Result").html($("option:selected").text());
于 2009-10-30T21:38:08.177 回答
1

你们在选择方面做得太多了。只需按值选择:

$("#mySelect").val( 3 );
于 2009-12-04T16:03:08.857 回答
1
if (!$("#select").find("option:selected").length){
  //
}
于 2013-08-21T09:48:00.890 回答
1

我找到了一个很好的方法来检查是否选择了选项并在没有选择时选择默认值。

    if(!$('#some_select option[selected="selected"]').val()) {
        //here code if it HAS NOT selected value
        //for exaple adding the first value as "placeholder"
        $('#some_select option:first-child').before('<option disabled selected>Wybierz:</option>');
    }

如果#some_select 没有默认选择的选项,则.val( )未定义

于 2015-03-21T16:20:30.567 回答
0
$("option[value*='2']").attr('selected', 'selected');
// 2 for example, add * for every option
于 2010-08-15T12:18:31.737 回答
0
$("#select_box_id").children()[1].selected

这是在 jquery 中检查选项是否被选中的另一种方法。这将返回布尔值(真或假)。

[1] 是选择框选项的索引

于 2012-04-02T07:32:33.500 回答
0

更改选择框上的事件以触发,一旦触发,只需拉出所选选项的 id 属性:-

$("#type").change(function(){
  var id = $(this).find("option:selected").attr("id");

  switch (id){
    case "trade_buy_max":
      // do something here
      break;
  }
});
于 2014-02-14T19:25:28.110 回答
0

我只是在寻找类似的东西,发现了这个:

$('.mySelect:not(:has(option[selected])) option[value="2"]').attr('selected', true);

这将查找类中尚未选择选项的所有选择菜单,并选择默认选项(在本例中为“2”)。

我尝试使用:selected而不是[selected],但这不起作用,因为总是选择某些东西,即使没有任何属性

于 2014-04-22T19:59:34.400 回答
0

如果您需要明确检查每个选项以查看是否有任何选项具有“选定”属性,您可以执行此操作。否则,使用option:selected您将获得第一个默认选项的值。

var viewport_selected = false;      
$('#viewport option').each(function() {
    if ($(this).attr("selected") == "selected") {
        viewport_selected = true;
    }
});
于 2016-01-17T09:19:43.557 回答