UI Accodion блокировка всех вкладок кроме текущей
Как сделать так, что б при нажатии на кнопки редактировать пользователь не мог открыть другую закладку, допустим Area 1.
А после нажатия кнопки сохранить снова мог переходить на любую созданную закладку. Метод accordion("disable") не предлагать так как он блокирует весь аккардион и пользователь уже не может нажать ни кнопку сохранить ни другую вкладку. ![]() <div id="accordion"> <h3><a href="#">Area 0</a></h3> <div><input type="button" value="Редактировать" id="edit"><input type="button" value="Сохранить" id="save"></div> <h3><a href="#">Area 1</a></h3> <div><input type="button" value="Редактировать" id="edit"><input type="button" value="Сохранить" id="save"></div> </div> Пробывал так не работает editFlagAccord=true;//флаг включения редактирования $( "#accordion" ).accordion({ changestart:function(e,ui){ active = $("#accordion").accordion( "option", "active" ); if(editFlagAccord){ }else{ $(this).accordion( "option", "active", active ).accordion("activate" ,active ); } } }) $("#edit").live("click", function(){ editFlagAccord=false; //$("#accordion").accordion("disable"); }); $("#save").live("click", function(){ editFlagAccord=true; //$( "#accordion" ).accordion("enable"); }); |
Пока что написал так, блокировка работает, но из-за закливания события changestart, даже мой 4 ядерный комп подгючивает, нужно как то избавить от него.
editFlagAccord=true;//флаг включения редактирования $( "#accordion" ).accordion({ changestart:function(e,ui){ newHeaderArea=parseInt(ui.newHeader.find("a").prop("id")); oldHeaderArea=parseInt(ui.oldHeader.find("a").prop("id")); active = $("#accordion").accordion( "option", "active" ); if(editFlagAccord){ }else{ alert('active='+active+' oldHeaderArea='+oldHeaderArea+' newHeaderArea='+newHeaderArea);//выводим специально что бы показать что происходит зацикливание, но так блокировка происходит, но событие изменения закладки продолжает происходить постянно $(this).accordion( "activate" ,oldHeaderArea); } } }) $("#edit").live("click", function(){ editFlagAccord=false; }); $("#save").live("click", function(){ editFlagAccord=true; }); |
Часовой пояс GMT +3, время: 03:26. |