У меня есть сайт, сделанный в ASP.NET, который я превратил в модуль DotNetNuke. Но теперь, когда я пытаюсь проверить флажки, это не сработает.Флажки не работают в моем настраиваемом модуле
ответ
Приятные люди, которые сделали DotNetNuke, имеют особый юмор. Оказывается, флажки, используемые на моем сайте, скрыты DotNetNuke и заменены изображением флажка. Причина этого мне непонятна.
Просто взгляните на HTML:
<label style="display: inline-block;">
<input type="checkbox" id="copyAllSettingsCheckBox" name="copyallcheckbox" title="Copy all settings" style="position: absolute; z-index: -1; visibility: hidden;">
<span class="dnnCheckbox">
<span class="mark">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAMAAAAoyzS7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFAAAAAAAApWe5zwAAAAF0Uk5TAEDm2GYAAAAMSURBVHjaYmAACDAAAAIAAU9tWeEAAAAASUVORK5CYII=">
</span>
</span>
Include any additional settings.
</label>
Чтобы исправить это я использовал код, приведенный ниже. Это эффективно очищает материал, добавленный DotNetNuke. Просто поставьте его в конец вашего javascript.
$('.dnnCheckbox').remove();
$(':checkbox').removeAttr('style');
У меня похожие проблемы.
В моем случае я использую диалог/всплывающее окно, и причина того, что этот флажок не работает, как представляется, является z-index, равным -1 (отрицательный).
ОДНАКО кажется, что z-индекс флажка не всегда установлен на -1.
Например, поскольку у меня есть в диалоговом окне (всплывающее окно), изначально индекс z установлен в -1 (что, похоже, работает). Когда я открываю диалог нажатием кнопки, индекс z устанавливается в 1001 (что также, похоже, работает).
Однако с помощью флажка, содержащегося на панели обновления, postback возвращает индекс z-индекса в -1 (что не работает, поскольку флажок находится под диалоговым окном).
В заключении - проверить, если г-индекс элемента, содержащего флажок (рекурсивно) больше, чем CheckBox г-индекс, так как это может быть причиной этого не работает (элементы без Z-индекса, кажется, для работы с флажком).
немного Hacky исправить: Я добавил некоторые JQuery OnLoad принести Z-индекс CheckBox в выше его родителей (в данном случае диалоговое окно JQuery)
Это позволит получить все входы с Z-индекс -1 внутри родительского элемента, и установить их Z-индекс 1 выше родительского
//the id being the parent element that has the higher z-index
function FixInputZIndex(id){
var element = $('#' + id);
$('#' + id + ' input').filter(function() { return $(this).css('z-index') < 0; }).css('z-index', element.css('z-index') + 1);
}
Только что отметил элемент z-index: -1 в моем элементе ввода. Я все еще использую хак, чтобы исправить это, и я не знаю, как обойти это изящно. – Jeroen
Вы используете диалоговое окно, или элемент контейнера имеет более высокий индекс z? Я только что добавил jQuery onload, который ищет любой элемент с z-индексом -1 и делает его еще 1 чем элемент контейнера. –
Да, я @ m.t.Беннет; Я взглянул на сгенерированный HTML, z-index моего dialogcontainer равен 1002 – Jeroen
добавить класс «normalCheckBox» на свой флажок и DNN будет игнорировать его. ej:
<input type="checkbox" class="normalCheckBox">
этот флажок изменяется в следующем файле: 'Ресурсы \ Shared \ scripts \ dnn.jquery.js'. и, как сказал User2683036 с «normalCheckBox», вы можете остановить это поведение, это также работает с 'normalRadioButton' – domiSchenk
Вы можете изучить проблему немного больше, просто отключив функциональность DNN, это не лучший способ сделать что-то в DNN. У меня есть флажки в моих модулях, и они отлично работают с функциональностью DNN, заменяющей их для UI. –
Когда будет время, я еще раз посмотрю на это. Я согласен с тем, что это более или менее хак вместо реального решения. – Jeroen