0
中关闭jquery ui模态。 我有一个使用jQuery UI插件生成在线模态窗口,因为这样的脚本:再次从另一个函数
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').dialog("close")
:
$('#newTopic_form').bind('submit', function() {
var error = '';
var topicTitle = $('input[name=newTopicTitle]').val();
var topicBody = $('textarea[name=newTopicBody]').val();
if(topicTitle == '' || topicTitle.length < 2)
{
error = error + '<br />You must enter a longer title.';
}
if(topicBody == '' || topicBody.length < 2)
{
error = error + '<br />You must enter a longer topic.';
}
if(error != '')
{
$('#newTopicError').css("display","none");
$('#newTopicError').html(error);
$('#newTopicError').fadeIn(1000);
}
else
{
var pageUrl = window.location.search;
var pattern = /mode=viewcat&id=(\d+)&title/gi;
var catID = pageUrl.match(pattern);
var data = 'mode=newTopic&cat_id=' + catID + '&title=' + encodeURIComponent(topicTitle) + '&content=' + encodeURIComponent(topicBody) + '&u=' + usrId;
$.ajax({
url: "data.php",
type: "POST",
dataType: "json",
data: data,
cache: false,
success: function(data) {
if(data.response == 'added')
{
$('#newTopicError').css("display", "none");
$('#newTopicError').html("You have added your topic.");
$('#newTopicError').fadeIn(1000);
setInterval(10000, function(){
$('#newTopic').dialog("close");
});
}
}
});
}
return false;
});
表单提交和处理完全正常,并且正确的字符串会淡入模态的窗体响应区域,但窗口永远不会关闭。
我的RegEx还存在一个问题,因为它只会返回null而不是catID,如果有人想要帮忙的话。 :)
OP可能还想调查jQuery UI对话框autoOpen属性。 – BNL
修好了!万分感谢!现在来找出这个RegEx ... – chaoskreator
@chaoskreator:你可以在这个答案中添加函数(http://stackoverflow.com/questions/901115/get-query-string-values-in-javascript/5158301#5158301)到您的JS实用程序,然后使用'getParameterByName('id')'提取'id'字段。您可以避免以这种方式维护URL模式。 –