获取隐藏下拉列表禁用选定选项的值

Posted

技术标签:

【中文标题】获取隐藏下拉列表禁用选定选项的值【英文标题】:get value of hidden dropdown disabled selected option 【发布时间】:2021-05-15 09:52:25 【问题描述】:

我有一个简单的下拉列表,其中第一个选项被选中并禁用,另外两个选项 当我单击“提交”并显示下拉列表时,我得到了下拉列表的值 当下拉列表被隐藏时,即使我尝试使用 $("#select").val("None") 命令将值设置为字符串“None”,我总是得到值“null”

隐藏下拉列表后如何将值设置为“无”?

===== 代码输出:====

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function()
  $(".btn1").click(function()
    $("p").hide();
    $("select").hide();
    $("select").val("None");
  );
  $(".btn2").click(function()
    $("p").show();
    $("select").show();
    $("#select option:first").prop("selected", true);
  );
  $("#btnSmbt").click(function() 
    $("#select").val("None");
    alert($("#select").val());
  );
);
</script>
</head>
<body>

<p>This is a paragraph.</p>
<select id="select">
    <option value="" disabled selected>Select Number</option>
    <option value"1">1</option>
    <option value"2">2</option>
</select>
<br><br>
<button class="btn1">Hide</button>
<button class="btn2">Show</button>
<br><br>
<button type="button" class="btn btn-default" id="btnSmbt" name="btnSmbt">Submit</button>

</body>
</html>

【问题讨论】:

您的下拉菜单有 3 个选项,空白、“1”、“2” - 您想用“无”选择哪一个? 【参考方案1】:

您的代码中有几个问题。首先,HTML 在option 元素中有一些错误;您在value 属性和您提供的值之间缺少=

其次,在 jQuery 代码中,您将 'None' 的值设置为选择,但它包含的任何选项都没有该值。我假设您正在尝试选择第一个 option 元素,因此它应该是一个空字符串:.val('')

最后你alert()之后你将它重新设置回默认值。这就是为什么您总是在警报本身中什么也看不到的原因。交换这些线。

话虽如此,试试这个:

$(document).ready(function() 
  $(".btn1").click(function() 
    $("p").hide();
    $("select").hide();
    $("select").val('');
  );
  
  $(".btn2").click(function() 
    $("p").show();
    $("select").show();
    $("select").val('');
  );
  
  $("#btnSmbt").click(function() 
    alert($("#select").val());
    $("#select").val('');
  );
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<p>This is a paragraph.</p>
<select id="select">
  <option value="" disabled selected>Select Number</option>
  <option value="1">1</option>
  <option value="2">2</option>
</select><br><br>

<button class="btn1">Hide</button>
<button class="btn2">Show</button><br><br>

<button type="button" class="btn btn-default" id="btnSmbt" name="btnSmbt">Submit</button>

【讨论】:

被打败了一分钟 :)【参考方案2】:

"None" 不是您的选择选项中的现有值,因此它会给您 null

你的 html 值选项也错过了=

为了获得一个值,您必须通过示例12 在这些选项之间设置一个现有值,如您的示例所示,请参见下面的 sn-p:

$(document).ready(function()
  $(".btn1").click(function()
    $("p").hide();
    $("select").hide();
    $("select").val("1");
  );
  $(".btn2").click(function()
    $("p").show();
    $("select").show();
    $("#select option:first").prop("selected", true);
  );
  
  $("#btnSmbt").click(function() 
    $("#select").val();
    alert($("#select").val());
  );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>This is a paragraph.</p>
<select id="select">
    <option value="" disabled selected>Select Number</option>
    <option value="1">1</option>
    <option value="2">2</option>
</select>
<br><br>
<button class="btn1">Hide</button>
<button class="btn2">Show</button>
<br><br>
<button type="button" class="btn btn-default" id="btnSmbt" name="btnSmbt">Submit</button>

【讨论】:

【参考方案3】:

除了其他答案,请注意disabled 控件没有值。

因此,您的第一个选项(已禁用)将始终给出值 null,而不管其实际值如何

查看 sn-p 以查看两个 select 的演示,其中一个禁止进入。

console.log($("#select1").val())
console.log($("#select2").val())
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="select1">
    <option value="anyvalue" disabled selected>Select Number</option>
</select>
<select id="select2">
    <option value="anyvalue" selected>Select Number</option>
</select>

代码中的实际问题很可能(如其他答案中所指出的那样)是由于在显示之前将其清除。但如果有人试图获取禁用的option 的值以供将来参考,这将是它给出null 的原因。

【讨论】:

以上是关于获取隐藏下拉列表禁用选定选项的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5 下拉列表中检索选定选项的值?

PHP如果变量等于下拉列表中的值,则将“选定”属性添加到选项

使用AngularJS在下拉列表中按选定值启用/禁用按钮

从 Thymeleaf 下拉列表中获取选定的值

如何在Angular 7中单击按钮时获取下拉列表的选定选项[重复]

表单下拉列表多行文本隐藏域