复制代码 代码如下:
$(#dialog).dialog({ 
bgiframe: true, 
autoopen: false, 
position: [posx, posy], //alert 出来为: , (不含双引号),或者报错,不知什么原因。 
height: 300, 
modal: true, 
buttons: { 
'创建新账号': function() { 
var bvalid = true; 
allfields.removeclass('ui-state-error');
bvalid = bvalid && checklength(name, username, 3, 16); 
bvalid = bvalid && checklength(email, email, 6, 80); 
bvalid = bvalid && checklength(password, password, 5, 16);
bvalid = bvalid && checkregexp(name, /^[a-z]([0-9a-z_])+$/i, username may consist of a-z, 0-9, underscores, begin with a letter.); 
// from jquery.validate.js (by joern), contributed by scott gonzalez: http://projects.scottsplayground.com/email_address_validation/ 
bvalid = bvalid && checkregexp(email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef])|(([a-z]|\d|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef])([a-z]|\d|-|\.|_|~|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef])*([a-z]|\d|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef])))\.)+(([a-z]|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef])|(([a-z]|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef])([a-z]|\d|-|\.|_|~|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef])*([a-z]|[\u00a0-\ud7ff\uf900-\ufdcf\ufdf0-\uffef])))\.?$/i, eg. ui@jquery.com); 
bvalid = bvalid && checkregexp(password, /^([0-9a-za-z])+$/, password field only allow : a-z 0-9);
if (bvalid) { 
$('#users tbody').append('' + 
'' + name.val() + ' ' + 
'' + email.val() + ' ' + 
'' + password.val() + ' ' + 
'
'); 
$(this).dialog('close'); 
}; 
}, 
取消: function() { 
$(this).dialog('close'); 
} 
},
close: function() { 
allfields.val('').removeclass('ui-state-error'); 
} 
});
后来参考wind的为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能。,在他的建议下,完全照葫芦画瓢写了个jquery.ui.dialog的重载方法,实现在鼠标当前位置打开dialog
代码如下 
复制代码 代码如下:
/////////////////////////////////// 
//指定 jquery.ui.dialog打开时的位置 
/////////////////////////////////// 
(function($) { 
var originopen = $.ui.dialog.prototype.open 
$.ui.dialog.prototype.open = function() { 
//var event= window.event || arguments.callee.caller.arguments[0]; 
//var event = event || window.event; 
var event = getevent(); 
//alert(event) // ie 和 ff下,都显示 [object] 
var posx = 0; 
var posy = 0; 
if (event.pagex || event.pagey) { 
posx = event.pagex; 
posy = event.pagey; 
} 
else { 
posx = event.clientx + document.body.scrollleft - document.body.clientleft; 
posy = event.clienty + document.body.scrolltop - document.body.clienttop; 
}; 
this.options.position = [posx, posy]; 
//alert(this.options.position); 
originopen.apply(this, arguments); 
};
function getevent() { //同时兼容ie和ff的写法 
if (document.all) return window.event; 
func = getevent.caller; 
while (func != null) { 
var arg0 = func.arguments[0]; 
if (arg0) { 
if ((arg0.constructor == event || arg0.constructor == mouseevent) 
|| (typeof (arg0) == object && arg0.preventdefault && arg0.stoppropagation)) { 
return arg0; 
} 
} 
func = func.caller; 
} 
return null; 
} 
})(jquery);
再次感谢wind。感谢 jww测试。(已兼容ie7,8,firefox3.5,chrome4)
   
 
   