如何使用jquery只读下拉菜单?

我正在使用以下语句使其只读,但不起作用。

$('#cf_1268591').attr("readonly", "readonly"); 

我不想让它失效,我只想使它只读。

 $('#cf_1268591').attr("disabled", true); 

下拉总是只读。 你可以做的是使其禁用

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

我有同样的问题,我的解决scheme是禁用所有选项未选中。 用jQuery很容易:

 $('option:not(:selected)').attr('disabled', true); 

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

 $('#cf_1268591 option:not(:selected)').prop('disabled', true); 

这个对我有用..

我会让该字段禁用。 然后,表单提交时,使其不被禁用。 在我看来,这比处理隐藏领域要容易得多。

 //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 ); }); 

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

这是你在找什么:

 $('#cf_1268591').attr("style", "pointer-events: none;"); 

奇迹般有效。

尝试$('#cf_1268591').prop("readOnly",true); (大写“O”)。 (注意:需要jQuery 1.6或更高版本。)

此代码将首先在每个下拉列表中存储原始select。 然后,如果用户更改select,则会将下拉菜单重置为其原始select。

http://jsfiddle.net/4aHcD/22/

 //store the original selection $("select :selected").each(function(){ $(this).parent().data("default", this); }); //change the selction back to the original $("select").change(function(e) { $($(this).data("default")).prop("selected", true); }); 

readonly属性为readonly

 $('select[readonly=readonly] option:not(:selected)').prop('disabled', true); 

我发现,更好的方法是使用CSS删除指针事件,并修改下拉列表中的不透明度(尝试0.5)。 这给用户看起来像正常一样被禁用,但仍然发布数据。

当然,这有一些向后兼容的问题,但在我看来,这是一个更好的select,比解决恼人的禁用/只读问题更好。

没有像只读下拉菜单这样的东西。 你可以做的是在每次更改后手动将其重置为第一个值。

 $("select").change(function(event) { $(this).val($(this).find("option").first().val()); }); 

http://jsfiddle.net/4aHcD/

这是一篇老文章,但是我想警告那些会find它的人。 通过名称获取元素时要注意禁用的属性。 奇怪,但似乎不太工作。

这不起作用:

 <script language="JavaScript"> function onChangeFullpageCheckbox() { $('name=img_size').attr("disabled",$("#fullpage").attr("checked")); </script> 

这项工作:

 <script language="JavaScript"> function onChangeFullpageCheckbox() { $('#img_size').attr("disabled",$("#fullpage").attr("checked")); </script> 

是的,我知道我最好应该使用道具,而不是attr,但至less现在道具将无法正常工作,因为旧版本的jquery,现在我不能更新它,不要问为什么… html区别只是添加ID:。 ..

 <select name="img_size" class="dropDown" id="img_size"> <option value="200">200px </option><option value="300">300px </option><option value="400">400px </option><option value="500">500px </option><option value="600" selected="">600px </option><option value="800">800px </option><option value="900">900px </option><option value="1024">1024px </option></select> <input type="checkbox" name="fullpage" id="fullpage" onChange="onChangeFullpageCheckbox()" /> 

我在脚本中没有发现任何错误,而在带有名称的版本中,控制台中没有错误。 但是,这可能是我在代码中的错误

见过:Win 7 Pro上的Chrome 26

对不起,语法不好。

尝试在“按键向上”时设置空string

Html是:

 <input id="cf_1268591" style="width:60px;line-height:16px;border:1px solid #ccc"> 

Jquery是:

 $("#cf_1268591").combobox({ url:"your url", valueField:"id", textField:"text", panelWidth: "350", panelHeight: "200", }); 

//使用空string键入后

 var tb = $("#cf_1268591").combobox("textbox"); tb.bind("keyup",function(e){ this.value = ""; }); 

正如@Kanishka所说,如果我们禁用表单元素,它将不会被提交。 我已经为这个问题创build了一个片段。 当select元素被禁用时,它会创build一个隐藏的input字段并存储该值。 启用时,删除创build的隐藏input字段。

更多信息

 jQuery(document).ready(function($) { var $dropDown = $('#my-select'), name = $dropDown.prop('name'), $form = $dropDown.parent('form'); $dropDown.data('original-name', name); //store the name in the data attribute $('#toggle').on('click', function(event) { if ($dropDown.is('.disabled')) { //enable it $form.find('input[type="hidden"][name=' + name + ']').remove(); // remove the hidden fields if any $dropDown.removeClass('disabled') //remove disable class .prop({ name: name, disabled: false }); //restore the name and enable } else { //disable it var $hiddenInput = $('<input/>', { type: 'hidden', name: name, value: $dropDown.val() }); $form.append($hiddenInput); //append the hidden field with same name and value from the dropdown field $dropDown.addClass('disabled') //disable class .prop({ 'name': name + "_1", disabled: true }); //change name and disbale } }); }); 
 /*Optional*/ select.disabled { color: graytext; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form action="#" name="my-form"> <select id="my-select" name="alpha"> <option value="A">A</option> <option value="B">B</option> <option value="C">C</option> </select> </form> <br/> <button id="toggle">toggle enable/disable</button> 

您也可以禁用它,并在您提交调用启用它的那一刻。 我认为是最简单的方法:)