这个问题似乎非常普遍,经过研究和尝试所有建议的解决方案,对其他人起作用并不适合我。要添加,firebug也没有显示任何错误。
我正在使用Jquery模式对话框。该对话框将通过网格列上的链接打开。 问题是它只打开一次,关闭按钮没有关闭对话框,但是我可以用右上角的(X)关闭它。但是,在尝试重新打开不同列值的对话框时,不会打开对话框(虽然执行了服务器端操作类)..请帮忙。
相关守则: 父页面(jsp)
<s:url id="testurl" action="openView"/>
<script type="text/javascript">
$(function(){
$("#dialogOne").dialog({
autoOpen: false,
title: 'Details',
modal:true,
width:970,
buttons: { "Close": function() { $(this).dialog("close"); } },
open: function(event, ui) { $(".ui-dialog-titlebar-close").show(); }
});
});
function formatLink(cellvalue, options, rowObject) {
return "<a href='#' onClick='javascript:openDialog("+cellvalue+");return false;'>" + cellvalue + "</a>";
}
function openDialog(number) {
$("#dialogOne").load("<s:property value="testurl"/>?Number="+number);
$("#dialogOne").dialog('open');
}
相关网格栏:
<sjg:gridColumn
name="number"
index="nsNumber"
title="View Action"
formatter="formatLink"
sortable="false"
width="80"
/>
我已经尝试了ajax解决方案,并记录了准备好的建议变体,但它没有用。操作openView返回一个jsp,我已经确保该页面上的div id都是唯一的,如果这有任何区别的话。 Firebug没有显示任何错误。对话框仅打开一次,无法通过对话框关闭按钮关闭。并且,之后无法打开(/重新打开)对话框。
谢谢,
答案 0 :(得分:0)
我认为这是您的脚本配置的问题。事件处理程序未正确初始化,因此事件未按预期执行。
通常,您需要在加载页面时对页面进行初始化,并且我已经将我的处理程序包装在$(document).ready()函数中取得了最大的成功。除此之外,您使用的onClick方法也是可疑的。如果您使用的是jQuery,最好避免将onClick分配给标记本身。通过使用jQuery及其绑定机制,您可以避免动态页面元素在事件处理程序方面无法正常运行的问题。
function formatLink(cellvalue, options, rowObject) {
return "<a href='#' class='dialogLink' data-cell='cellvalue'>" + cellvalue + "</a>";
}
$(document).ready(Function(){
$("#dialogOne").dialog({
autoOpen: false,
title: 'Details',
modal:true,
width:970,
buttons: { "Close": function() { $(this).dialog("close"); } },
open: function(event, ui) { $(".ui-dialog-titlebar-close").show(); }
});
// This will bind the event handler to any link with this class. The data
// attribute is used to set/get the cellvalue from the link that is clicked.
$('.dialogLink').on('click', function(){
var number = $(this).data('cell');
$("#dialogOne").load("<s:property value="testurl"/>?Number="+number);
$("#dialogOne").dialog('open');
});
});