У меня есть запрос от пользователей на изменение Microsoft CRM, чтобы ее поля были доступны только для чтения, но были доступны только для чтения.Изучив DOM, я узнал, что радиоуправление отключено.Для выполнения этого запроса у меня нет возможности изменить, как приложение генерирует HTML.Однако у меня есть возможность запускать функцию javascript для события onload форм.Я пробовал несколько разных подходов, совсем недавно я пытался использовать jQuery, чтобы удалить атрибут disabled и прикрепить обработчики событий к радио, чтобы вернуть их значения обратно, если пользователь пытается их изменить.
Используя этот подход, я узнал, что событие изменения срабатывает на элементе управления, на который нажимает пользователь, но не на переключателе, который не был выбран при выборе другого переключателя в той же группе.
Чтобы обойти это, я попытался написать собственное свойство для всех элементов управления радио, которые записывают, была ли оно проверено при загрузке страницы, а затем обработчик события, который сбрасывает проверенное свойство на каждой переключателе с настраиваемым атрибутом до его оригинала.значение всякий раз, когда срабатывает событие изменения любого переключателя.Однако этот метод не работает для меня.Я собираюсь включить пример приложения, чтобы показать мой подход.Я был бы признателен за помощь в исправлении моего кода или за помощь в решении этих задач с использованием другого подхода.
Я хотел бы еще раз переформулировать требования для любого решения, которое я придумаю.
- Решение необходимо записать только в IE.
- У меня нетконтроль над сгенерированным HTML, только возможность писать javascript.
- Поля, которые установлены как отключенные, должны отображаться черным, а не серым.
Пользователи не должны иметь возможностьизменить значения этих полей.
<script src="js/jquery.1.6.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
//Set custom attribute for disabled checked radio's
$('input:radio:disabled:checked').attr('custom:bmiChecked', "true");
//set custom attribute for disabled unchecked radio's
$('input:radio:disabled:not(:checked)').attr('custom:bmiChecked', "false");
//select disabled radio's and then filter to radio's that have the custom attribute set
$('input:radio:disabled').filter(function () {
return $(this).attr('custom:bmiChecked');
}).each(function () {
//attach a click event handler
$(this).click(function () {
//In the event handler select all radio's that have the bmiChecked attribute
$('input:radio').filter(function () {
return $(this).attr('custom:bmiChecked');
}).each(function () {
//For each of these radio's set their checked property to the original value from the page load.
if ($(this).attr('custom:bmiChecked') == "true") {
$(this).attr('checked', "").css({ 'border': '5px solid green' });
}
else {
$(this).attr('checked', "checked").css({ 'border': '5px solid red' });
}
});
});
});
//remove all the disabled properties from radiobutton's
$('input:radio:disabled').prop('disabled', false);
});
</script>
<input name="rad_new_bitfield2options" tabindex="1090" class="ms-crm-RadioButton" disabled="" id="Radio2" style="margin-left: 0px;" type="radio" value="1" checked="checked" />
<input name="rad_new_bitfield2options" tabindex="1090" class="ms-crm-RadioButton" disabled="" id="Radio3" type="radio" value="2" />