Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   UI Accodion блокировка всех вкладок кроме текущей (https://javascript.ru/forum/jquery/18158-ui-accodion-blokirovka-vsekh-vkladok-krome-tekushhejj.html)

Telnet 19.06.2011 21:49

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");
});

Telnet 20.06.2011 16:19

Пока что написал так, блокировка работает, но из-за закливания события 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, время: 05:33.