如何使用jquery只读取下拉列表?

Kar*_*Ali 81 jquery

我使用以下语句使其只读,但它不起作用.

$('#cf_1268591').attr("readonly", "readonly"); 
Run Code Online (Sandbox Code Playgroud)

我不想让它禁用,我想让它只读.

Kan*_*iya 172

$('#cf_1268591').attr("disabled", true); 
Run Code Online (Sandbox Code Playgroud)

下拉始终是只读的.你能做的就是禁用它

如果使用表单,则禁用的字段不会提交,因此使用隐藏字段存储禁用的下拉列表值

  • 禁用下拉列表不会提交.我会尝试你的解决方案. (25认同)
  • 你现在应该使用`prop()`. (4认同)
  • 禁用选择(下拉)的一个问题是在某些浏览器(例如IE9)中丢失了焦点.如果在处理ajax调用时禁用了select元素,例如,当用户在表单中的位置丢失时,这可能是一个问题. (3认同)
  • 另一个“解决方法”是在提交表单之前启用这些字段。或者在我以JSON格式发送数据的情况下(启用,获取数据,再次禁用):var disabled = $(您的表单).find(':input:disabled')。removeAttr('disabled'); var data = getFormJSONData($(yourform)); disable.attr('disabled','disabled'); (2认同)

小智 133

我有同样的问题,我的解决方案是禁用未选中的所有选项.使用jQuery很容易:

$('option:not(:selected)').attr('disabled', true);
Run Code Online (Sandbox Code Playgroud)

  • 很好的主意!要使用当前版本的jQuery的最佳实践,我将使用prop方法来设置禁用的值.即`$('选项:不(:选择)').prop('disabled',true);` (21认同)
  • 这应该是第一答案。 (2认同)

Pra*_*ran 21

尝试这一个...而不禁用所选的值..

$('#cf_1268591 option:not(:selected)').prop('disabled', true);
Run Code Online (Sandbox Code Playgroud)

这个对我有用..


小智 20

这就是你要找的东西:

$('#cf_1268591').attr("style", "pointer-events: none;");
Run Code Online (Sandbox Code Playgroud)

奇迹般有效.

  • 很好的答案,但要注意这仍然允许选择选项卡。您还需要设置```tabindex="-1"``` (2认同)

Luc*_*nte 13

设置元素disabled不会提交数据,但select元素不具备readonly.

你可以模拟readonlyselect使用CSS样式和JS以防止标签的变化:

select[readonly] {
  background: #eee;
  pointer-events: none;
  touch-action: none;
}
Run Code Online (Sandbox Code Playgroud)

然后使用它像:

var readonly_select = $('select');
$(readonly_select).attr('readonly', true).attr('data-original-value', $(readonly_select).val()).on('change', function(i) {
    $(i.target).val($(this).attr('data-original-value'));
});
Run Code Online (Sandbox Code Playgroud)

结果:

  // Updated 08/2018 to prevent changing value with tab
$('a').on('click', function() {
var readonly_select = $('select');
$(readonly_select).attr('readonly', true).attr('data-original-value', $(readonly_select).val()).on('change', function(i) {
	$(i.target).val($(this).attr('data-original-value'));
});
});
Run Code Online (Sandbox Code Playgroud)
select[readonly] {
  background: #eee;
  pointer-events: none;
  touch-action: none;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#">Click here to enable readonly</a>
<select>
<option>Example 1</option>
<option selected>Example 2</option>
<option>Example 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

  • 非常酷的方法,但用户仍然可以使用键盘上的TAB来选择一个值. (2认同)

NL3*_*294 9

我会禁用该字段.然后,当表单提交时,使其不被禁用.在我看来,这比处理隐藏字段更容易.

//disable the field
$("#myFieldID").prop( "disabled", true );           

//right before the form submits, we re-enable the fields, to make them submit.
$( "#myFormID" ).submit(function( event ) {
    $("#myFieldID").prop( "disabled", false );
});     
Run Code Online (Sandbox Code Playgroud)


Art*_*zan 6

为了简化这里的事情,这是一个jQuery插件,没有麻烦这样做:https://github.com/haggen/readonly


小智 6

简单的jQuery删除未选中的选项。

$('#your_dropdown_id option:not(:selected)').remove();
Run Code Online (Sandbox Code Playgroud)