Я использую следующий оператор, чтобы сделать его только для чтения, но он не работает.
$('#cf_1268591').attr("readonly", "readonly");
Я не хочу отключать его, я хочу сделать это только для чтения.
Я использую следующий оператор, чтобы сделать его только для чтения, но он не работает.
$('#cf_1268591').attr("readonly", "readonly");
Я не хочу отключать его, я хочу сделать это только для чтения.
$('#cf_1268591').attr("disabled", true);
выпадающее меню всегда читается только. что вы можете сделать, это отключить его
Если вы работаете с формой, отключенные поля не отправляются, поэтому используйте скрытое поле для хранения отключенного выпадающего значения
У меня была такая же проблема, но я решил отключить все выбранные параметры. Очень просто с jQuery:
$('option:not(:selected)').attr('disabled', true);
Попробуйте это... без отключения выбранного значения.
$('#cf_1268591 option:not(:selected)').prop('disabled', true);
Это работает для меня..
Это то, что вы ищете:
$('#cf_1268591').attr("style", "pointer-events: none;");
Работает как шарм.
Установка элемента с disabled
не будет отправлять данные, однако элементы select
не имеют только readonly
.
Вы можете смоделировать readonly
при select
с помощью CSS для стилизации и JS, чтобы предотвратить изменение с помощью вкладки:
select[readonly] {
background: #eee;
pointer-events: none;
touch-action: none;
}
Затем используйте его так:
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'));
});
Результат:
// 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'));
});
});
select[readonly] {
background: #eee;
pointer-events: none;
touch-action: none;
}
<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>
Я бы отключил поле. Затем, когда форма отправляется, сделайте ее не отключенной. На мой взгляд, это проще, чем иметь дело со скрытыми полями.
//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
Эта строка делает выбор с атрибутом readonly
только для чтения:
$('select[readonly=readonly] option:not(:selected)').prop('disabled', true);
Простой jquery для удаления не выбранных опций.
$('#your_dropdown_id option:not(:selected)').remove();
Этот код сначала сохранит исходный выбор в каждом раскрывающемся списке. Затем, если пользователь изменяет выбор, он будет reset раскрывающимся списком до его первоначального выбора.
//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);
});
Я нашел, лучший способ сделать это - использовать CSS для удаления указателей-событий и изменения непрозрачности при выпадающем списке (попробуйте 0,5). Это дает пользователю возможность отключить его как обычно, но все же записывает данные.
У этого есть некоторые проблемы с обратной совместимостью, но, на мой взгляд, лучший вариант, чем преодоление раздражающей проблемы с отключением/чтением.
Вы также можете отключить его, и в тот момент, когда вы делаете запрос отправки, активируйте его. Я думаю, что это самый простой способ:)
Самый простой вариант для меня состоял в том, чтобы сделать select как readonly и добавить:
onmousedown="return false" onkeydown="return false"
Вам не нужно писать лишнюю логику. Нет скрытых входов или отключен, а затем повторно включен в форме submit.
Нет такой вещи, как раскрывающийся список только для чтения. То, что вы могли бы сделать, это reset его к первому значению вручную после каждого изменения.
$("select").change(function(event) {
$(this).val($(this).find("option").first().val());
});
Это старая статья, но я хочу предупредить людей, которые ее найдут. Будьте осторожны с отключенным атрибутом с полученным элементом по имени. Странно, но кажется, что это не так.
это не работает:
<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>
Да, я знаю, что лучше использовать prop, а не attr, но по крайней мере теперь поддержка не будет работать из-за старой версии 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()" />
...
Я не обнаружил ошибок в script, а в версии с именем ошибки в консоли не было. Но, конечно, это может быть моя ошибка в коде
Видел: Chrome 26 на Win 7 Pro
Извините за плохую грамматику.
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",
});
//сделать после keyup с пустой строкой
var tb = $("#cf_1268591").combobox("textbox");
tb.bind("keyup",function(e){
this.value = "";
});
Как сказал @Канишка, если мы отключим элемент формы, он не будет отправлен. Я создал фрагмент этой проблемы. Когда элемент выбора отключен, он создает скрытое поле ввода и сохраняет значение. Когда он включен, удаляются созданные скрытые поля ввода.
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>
Это хорошо работает
$('#cf_1268591 option:not(:selected)').prop('disabled', true);
С этим я могу видеть параметры, но я не могу выбрать его
Может быть, вы можете попробовать таким образом
function myFunction()
{
$("select[id^=myID]").attr("disabled", true);
var txtSelect = $("select[id^=myID] option[selected]").text();
}
Это устанавливает первое значение раскрывающегося списка в качестве значения по умолчанию, и оно кажется только для чтения
html5 поддерживает:
'
$("#cCity").attr("disabled", "disabled");
$("#cCity").addClass('not-allow');
'
Вот небольшая вариация на другие ответы, которые предлагают использовать отключено. Поскольку атрибут "disabled" может фактически иметь любое значение и по-прежнему отключаться, вы можете установить его только для чтения, например disabled = "только для чтения". Это отключит элемент управления как обычно, а также позволит вам легко оформить его по-другому, чем обычные отключенные элементы управления, например, с помощью CSS:
select[disabled=readonly] {
.... styles you like for read-only
}
Если вы хотите, чтобы данные включались в отправку, используйте скрытые поля или включите их перед отправкой, как подробно описано в других ответах.