Estoy usando la casilla de verificación Fabric UI en mi complemento de Office y parece que no puedo marcar la casilla de verificación mediante programación en mi panel de tareas. De hecho, puedo comprobarlo, pero no aparece marcado en la interfaz de usuario.
Pude hacerlo así con botones de opción y conmutadores, pero no puedo obtener la casilla de verificación por mi vida.
Radio:
$("#" + YesRadioButtonId).siblings('label').addClass('is-checked'); $("#" + YesRadioButtonId).siblings('label').prop('aria-checked', true); $("#" + YesRadioButtonId).prop('checked', true);Palanca:
$("#" + ToggleId).siblings('label').addClass('is-selected'); $("#" + ToggleId).prop('checked', true);Casilla de verificación HTML:
Nota: Puedo habilitar a través de HTML agregando checked=checked o aria-checked=true , pero quiero que mi HTML esté completamente deshabilitado y solo se habilite a través de JS.
<div class="ms-CheckBox column-selector"> <input tabindex="-1" type="checkbox" class="ms-CheckBox-input" id="ChkBox-yes" /> <label role="checkbox" class="ms-CheckBox-field " tabindex="0" name="ChkBox-yes"> <span class="ms-Label">YES</span> </label> </div>Casilla JS:
Nota: Intenté agregar jQueryui cuando vi referencias en línea para checkboxradio("refresh"); pero obtengo un error: cannot call methods on checkboxradio prior to initialization;
TaskPaneApp.CheckBoxElements = $(".column-selector").map(function () { return new fabric['CheckBox'](this); }); //$("#" + YesCheckBoxId).prop("checked", true).checkboxradio('refresh'); $("#" + YesCheckBoxId).prop("checked", true) $("input[type='checkbox']").checkboxradio(); //$("#" + YesCheckBoxId).attr('checked', 'checked'); //$("#" + YesCheckBoxId).$('input[checked=""]').val("checked"); //$("#" + YesCheckBoxId).trigger("click"); //$("#" + YesCheckBoxId).addClass("ui-checkbox-on");Todos mis otros elementos que pude ajustar después de la inicialización.
Las casillas de verificación deben ajustarse antes de la inicialización y, si se ajustan después de la inicialización, deben reiniciarse.
Aquí están mis funciones finales:
//Checkboxes //Checkboxes set to Y by default must be changed BEFORE INIT //Changeing Checkboxes require re-init! //Re-Init also re-init toggles? //Just don't re-init and mostly, just don't use Checkbox, use Toggle/Radio Do_CheckCheckBox(YesCheckBoxID) Init_CheckBoxes(window); function Init_CheckBoxes(window) { window.CheckBoxElements = $(".column-selector").map(function () { return new fabric['CheckBox'](this); }); } function Do_CheckCheckBox(DivID, reinitbool, opt_windowreqifreinit) { $("#" + DivID).prop("checked", true); $("#" + DivID).siblings('label').prop('aria-checked', true); if (reinitbool == true && window != undefined) { Init_CheckBoxes(window) }; return true; }Nota: Esto también se confunde con mis conmutadores, puedo buscar en la función de inicio para solucionarlo, pero sobre todo, es probable que no use casillas de verificación, prefiero alternar/radio, pero quería que todos los elementos funcionaran. También estoy bien simplemente configurando los valores predeterminados, es probable que no necesite volver a ajustar las casillas de verificación después de la inicialización inicial de todos modos.
Actualización: ... lol, así que esto también funcionó, pero es menos confiable, ya que puede activarse/desactivarse sin verificar y, en mis pruebas, funcionó bien para configurar Y antes de iniciar. Pero después de reiniciar, ocasionalmente no podía hacer clic en las casillas de verificación, tenía que reiniciar.
document.getElementById(YesCheckBoxID).click()