Friday, 15 May 2015

javascript - jquery-ui dialog being displayed with no content (see update 3) -



javascript - jquery-ui dialog being displayed with no content (see update 3) -

in spring project, have dashboard page, each click in link open destination page in separate popup window (created jquery-ui dialog):

<div class="navbar navbar-inverse navbar-fixed-top" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">project name</a> </div> <div class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li><a href="#">home</a></li> <li> <c:url value="/usuario/listagem" var="usuario"/> <a class="popup" data-action="${usuario}/1/10/1" data-target="popup" href="#">usu&aacute;rios</a></li> <li> <c:url value="/logout" var="logouturl"/> <a href="${logouturl}">sair sistema</a></li> </ul> </div><!--/.nav-collapse --> </div> </div> <div id="popup"></div>

the code it's following:

$( ".dialog" ).dialog({ autoopen: false, closeonescape: true, closetext: "fechar", show: { effect: "fadein", duration: 1000 }, hide: { effect: "fadeout", duration: 1000 }, close: function( event, ui ) { $(this).remove(); } }); function add_dialog(container_div) { var id_dialog_div = math.floor(math.random() * 1000000); var dialog_div = $('<div id="dialog-'+id_dialog_div+'" class="dialog" title="basic dialog"> <p> <span id="text'+id_dialog_div+'"></span> </p> </div>'); $(container_div).append(dialog_div); homecoming id_dialog_div; } function open_dialog(url, dialog_div) { $.ajax({ type: "get", url: url }).done(function(data){ var id_dialog_div = add_dialog(dialog_div); var dialog_box = $('#dialog-'+id_dialog_div); var $temp = $('<div/>', {html:data}); $( dialog_box ).dialog( { title: $temp.find('title').text() } ); $( dialog_box ).find('#text'+id_dialog_div).html( $temp.remove('head').html() ); $( dialog_box ).dialog( { height: 480 } ); $( dialog_box ).dialog( { width: 640 } ); $( dialog_box ).dialog( "open" ); }); } $(document).on('click', '.popup', function (event) { event.preventdefault(); var action = $(this).data('action'); var target = $(this).data('target'); var div = $("#"+target); open_dialog(action, div); });

the view should opened in popup it's that:

<jsp:include page="../../common/listagem.jsp"> <jsp:param name="name" value="usuario"/> <jsp:param name="elements" value="login,first_name,last_name,email"/> </jsp:include>

and jsp common/listagem.jsp it's that:

<%@ include file="../include/header.jsp" %> <c:url value="/${param.name}/cadastra" var="cadastra"/> <c:url value="/${param.name}/altera" var="altera"/> <c:url value="/${param.name}/remove" var="remove"/> <input type="hidden" name="pagina" value="${pagina}"> <input type="hidden" name="items" value="${items}"> <input type="hidden" name="ordem" value="${ordem}"> <sec:authorize access="haspermission(#user, 'altera_${param.name}')"> <p> <button type="button" class="btn btn-default btn-lg">cadastrar novo ${param.name} </button> </p> </sec:authorize> <table border="2"> <thead> <tr> <th>#</th> <c:foreach var="item" items="${param.elements}" varstatus="index"> <th class="col" data-property="<c:out value="${item}"/>"> <c:out value="${item}"/> </th> </c:foreach> <th></th> </tr> </thead> <tbody class="content"> </tbody> <tfoot> <tr class="comando"> <sec:authorize access="haspermission(#user, 'altera_${param.name}')"> <td data-nome="altera" data-action="${altera}"></td> </sec:authorize> <sec:authorize access="haspermission(#user, 'remove_${param.name}')"> <td data-nome="remove" data-action="${altera}"></td> </sec:authorize> </tr> </tfoot> </table> <c:url value="/${param.name}/listagem.json" var="listagem"/> <script> $(document).ready(function(){ load_content("${listagem}", $('table')); }); </script> <%@ include file="../include/footer.jsp" %>

my problem when click in close button, windows isn't closed immediately, it's shrunked, remaining titlebar. if click 1 time again in close button, close. also, no title displayed in window, sec (and smallest) titlebar displayed on screen right title, , 1 close after sec click in first close button.

this happening:

anyone knows what's happening here , how solve this?

update

in code above, line:

$( dialog_box ).find('#text').html( $temp.remove('head').html() );

should remove jsp page <head> tag , content , append <body> content within element <span> in <div>:

<div id="dialog" class="dialog" title="basic dialog"> <p> <span id="text"> </span> </p> </div>

but when run application, , html code in browser dev tool, content jsp page added <div>, <head> included.

update 2

i seek remove function add_dialog, , alter <div> this:

<div id="popup"> <div id="dialog" class="dialog" title="basic dialog"> <p> <span id="text"> </span> </p> </div> </div>

and function open_dialog this:

function open_dialog(url, dialog_div) { $.ajax({ type: "get", url: url }).done(function(data){ //var id_dialog_div = add_dialog(dialog_div); var dialog_box = $('#dialog'); var $temp = $('<div/>', {html:data}); $( dialog_box ).dialog( { title: $temp.find('title').text() } ); $( dialog_box ).find('#text').html( $temp.remove('head').html() ); $( dialog_box ).dialog( "open" ); }); }

but work partially: when open dialog in first time, it's displayeh correctly, after close , reopen it, issue happens again.

update 3

i solve problem shunkring / duplication code:

$( "#popup" ).dialog({ autoopen: false, closeonescape: true, closetext: "fechar", show: { effect: "fadein", duration: 1000 }, hide: { effect: "fadeout", duration: 1000 } }); function open(url, target) { $.ajax({ type: "get", url: url }).done(function( info ) { var $temp = $('<div/>', {html:data}); var conteudo = $temp.remove('head').html(); target.empty(); target.find('#text').html(conteudo); $("#popup").dialog('open'); }); } $(document).on('click', 'a.link', function (event) { event.preventdefault(); var action = $(this).attr('href'); var target = $('#dialog'); open(action, target); }); $(document).on('click', 'button.btn-link', function (event) { event.preventdefault(); var action = $(this).data('href'); var target = $('#dialog'); open(action, target); });

but now, dialog opened without content. knows wrong now?

not sure javascript , not going there depending on version of jqueryui code uses

close: function( event, ui ) { $(this).remove(); }

throws error, check console output in browser, in code have dialog applied #page_preview

$("#page_preview").dialog('remove');

error: no such method 'remove' dialog widget instance

but use

$("#page_preview").dialog('close');

it works

my entrire code looks this

$("#page_preview").dialog({ title: "page preview", dialogclass: "no-close", autoopen: false, resizable: true, modal: true, width: 1100, buttons: [ { text: "ok", click: function() { $(this).dialog("close"); } }] });

i believe doing doing in close: section removing element dialog applied to, dialog construction remains, thats why seems has shrunk

hope helps

final edit:

take in here, different works, sorry best can u goo.gl/glqiyo

javascript jquery jsp

No comments:

Post a Comment