2015-03-23 4 views
1

Я пытаюсь написать код, который будет выводить HTML-страницы только для чтения, но не «отключен», потому что я хочу фиксировать значения по умолчанию в текущей форме, которые поступают из предыдущей формы.Сделать раскрывающееся меню только для чтения

Я написал код, который работает отлично в Chrome, но не работает в IE. Каким может быть возможное решение этого.

Ниже приведен код jquery, который я написал.

$("#Q4Q25xP1_1, #Q4Q25xP1_2, #Q4Q25xP1_3, #Q4Q25xP1_4, #Q4Q25xP1_5").each(function(){ 
       $(this).on("mousedown", function(e){ 
           return false; 
       }).on("change", function(){ 
           $(this).find('option').each(function(i, opt) { 
            opt.selected = opt.defaultSelected; 
           }); 
       }).css("background-color","grey"); 
}); 
+1

Предоставить jsFiddle, спасибо –

+0

Отключить его и использовать скрытое текстовое поле с тем же значением –

+1

Выпадающие списки только для чтения, поскольку вы не можете писать в любом раскрывающемся списке, таком как текстовое поле. –

ответ

1

Попробуйте это, просто отключить опции, которые не selcted

$("#Q4Q25xP1_1,#Q4Q25xP1_2,#Q4Q25xP1_3").find("option").each(function() { 
    if ($(this).attr("selected") != "selected") { 
     $(this).attr("disabled", 'disabled'); 
    } 
}); 

и вот jsfiddle для справки https://jsfiddle.net/3v0w9n3r/

И он работает во всех браузерах, включая IE.

+0

Это именно то, что мне нужно, благодаря Vinod – braceyourself

+0

Отлично, всегда приветствую @braceyourself Приветствия :) –

0

Вы можете попробовать установить pointer-events в none с помощью CSS:

<select style="pointer-events:none;"> 
.... 
+0

это не сработало для меня :( – braceyourself

0
$("#Q4Q25xP1_1, #Q4Q25xP1_2, #Q4Q25xP1_3, #Q4Q25xP1_4, #Q4Q25xP1_5").each(function(){ 
     $(this).attr('disabled','disabled'); 
} 
+0

Я не хочу, чтобы выпадающее меню было отключено, так как я хочу сохранить данные, которые были загружены по умолчанию. – braceyourself

+0

Итак, вы хотите см. данные, но не позволяйте этим изменениям. Я прав? – xxxx

+0

да, вы правы – braceyourself

0

"Change" событие не является последовательным в браузере В Firefox и Chrome он работает правильно но в IE нужно чтобы щелкнуть TWICE, сначала удалить «неопределенное» состояние, затем снова запустить событие изменения. поэтому вам нужно использовать событие нажатия триггера, чтобы щелкнуть второй раз, чтобы событие инициализировалось и работало.

Таким образом, вы должны использовать триггер MouseDown для второго раза применить MouseDown события на одном элементе, чем работа события изменения правильно

+0

Что касается событий, они работают отлично, только я не могу отменить это событие, а также не могу установить значение по умолчанию. – braceyourself

Смежные вопросы