从另一个函数中关闭jquery ui模式
再说一遍。 我有一个使用jQuery UI插件生成内联模式窗口的脚本,例如:从另一个函数中关闭jquery ui模式,jquery,regex,jquery-ui,jquery-ui-dialog,Jquery,Regex,Jquery Ui,Jquery Ui Dialog,再说一遍。 我有一个使用jQuery UI插件生成内联模式窗口的脚本,例如: function openModal(src, width, title){ $("#" + src).dialog({ modal: true, width: width, title: title, resizable: false, show: 'fade', hide: 'fade' });
function openModal(src, width, title){
$("#" + src).dialog({
modal: true,
width: width,
title: title,
resizable: false,
show: 'fade',
hide: 'fade'
});
$('.ui-widget-overlay').hide().fadeIn();
return false;
}
$(document).ready(function() {
$('#newTopicBtn').click(function(e) {
e.preventDefault();
openModal('newTopic', 650, 'New Topic');
});
});
模态窗口按其应有的方式弹出
大多数模式窗口都以某种形式打开。问题是,当表单被提交并由脚本处理时,当我使用$('#newTopic')时,我似乎无法让表单的模式自行关闭。对话框(“关闭”)
:
$('newTopic'u form').bind('submit',function(){
var错误=“”;
var topicTitle=$('input[name=newTopicTitle]')。val();
var topicBody=$('textarea[name=newTopicBody]')。val();
如果(topicTitle=''| | topicTitle.length<2)
{
error=error+“
您必须输入更长的标题。”;
}
if(topicBody=''| | topicBody.length<2)
{
error=error+“
您必须输入更长的主题。”;
}
如果(错误!='')
{
$('newTopicError').css(“显示”、“无”);
$('#newTopicError').html(错误);
$('newTopicError')。fadeIn(1000);
}
其他的
{
var pageUrl=window.location.search;
var pattern=/mode=viewcat&id=(\d+)&title/gi;
var catID=pageUrl.match(模式);
var data='mode=newTopic&cat_id='+catID+'&title='+encodeURIComponent(topicTitle)+'&content='+encodeURIComponent(topicBody)+'&u='+usrId;
$.ajax({
url:“data.php”,
类型:“POST”,
数据类型:“json”,
数据:数据,
cache:false,
成功:功能(数据){
如果(data.response==“已添加”)
{
$('newTopicError').css(“显示”、“无”);
$('#newTopicError').html(“您已经添加了您的主题。”);
$('newTopicError')。fadeIn(1000);
setInterval(10000,函数(){
$('#newTopic')。对话框(“关闭”);
});
}
}
});
}
返回false;
});
表单提交并得到完美处理,正确的字符串消失在模态的表单响应区域中,但窗口永远不会关闭
我的正则表达式也有一个问题,因为它只返回null而不是catID,如果有人想帮助解决这个问题的话。:) 我想
setInterval(10000, function(){
$('#newTopic').dialog("close");
});
应该是:
setTimeout(function(){
$('#newTopic').dialog("close");
}, 10000);
原始代码的参数顺序错误,并且它说您希望每10秒关闭一次对话框。新代码的参数顺序正确,只执行一次,距离设置时间只有10秒。
setInterval(10000, function(){
$('#newTopic').dialog("close");
});
应该是:
setTimeout(function(){
$('#newTopic').dialog("close");
}, 10000);
原始代码的参数顺序错误,并且它说您希望每10秒关闭一次对话框。新代码的参数顺序正确,在设置后10秒内只执行一次。OP可能还想研究jquery ui dialog autoOpen属性。@ChaosCreator:您可以将此答案()中的函数添加到JS实用程序中,然后使用
getParameterByName('id'))
提取id
字段。您可以避免以这种方式维护URL模式。OP可能还希望调查jquery ui对话框的autoOpen属性。@ChaosCreator:您可以将此答案()中的函数添加到JS实用程序中,然后使用getParameterByName('id')
提取id
字段。这样可以避免维护URL模式。