2010-03-12 03:18:34 +00:00
<!DOCTYPE html>
2008-12-31 01:20:50 +00:00
< html lang = "en" >
< head >
2010-09-10 13:01:54 +00:00
< meta charset = "utf-8" >
2009-01-20 20:09:55 +00:00
< title > jQuery UI Dialog - Modal form< / title >
2010-09-10 13:01:54 +00:00
< link rel = "stylesheet" href = "../../themes/base/jquery.ui.all.css" >
< script src = "../../jquery-1.4.2.js" > < / script >
< script src = "../../external/jquery.bgiframe-2.1.1.js" > < / script >
< script src = "../../ui/jquery.ui.core.js" > < / script >
< script src = "../../ui/jquery.ui.widget.js" > < / script >
< script src = "../../ui/jquery.ui.mouse.js" > < / script >
< script src = "../../ui/jquery.ui.button.js" > < / script >
< script src = "../../ui/jquery.ui.draggable.js" > < / script >
< script src = "../../ui/jquery.ui.position.js" > < / script >
< script src = "../../ui/jquery.ui.resizable.js" > < / script >
< script src = "../../ui/jquery.ui.dialog.js" > < / script >
< script src = "../../ui/jquery.effects.core.js" > < / script >
< link rel = "stylesheet" href = "../demos.css" >
< style >
2009-01-29 21:48:09 +00:00
body { font-size: 62.5%; }
2008-12-31 06:32:43 +00:00
label, input { display:block; }
2009-01-29 21:48:09 +00:00
input.text { margin-bottom:12px; width:95%; padding: .4em; }
2008-12-31 06:32:43 +00:00
fieldset { padding:0; border:0; margin-top:25px; }
2009-01-29 21:48:09 +00:00
h1 { font-size: 1.2em; margin: .6em 0; }
2009-04-18 19:09:41 +00:00
div#users-contain { width: 350px; margin: 20px 0; }
2009-01-29 21:48:09 +00:00
div#users-contain table { margin: 1em 0; border-collapse: collapse; width: 100%; }
div#users-contain table td, div#users-contain table th { border: 1px solid #eee; padding: .6em 10px; text-align: left; }
2009-08-29 02:12:56 +00:00
.ui-dialog .ui-state-error { padding: .3em; }
.validateTips { border: 1px solid transparent; padding: 0.3em; }
2008-12-31 06:32:43 +00:00
< / style >
2010-09-10 13:01:54 +00:00
< script >
2008-12-31 01:20:50 +00:00
$(function() {
2009-07-11 14:00:08 +00:00
// a workaround for a flaw in the demo system (http://dev.jqueryui.com/ticket/4375), ignore!
2010-09-10 13:01:54 +00:00
$( "#dialog" ).dialog( "destroy" );
2009-01-29 21:48:09 +00:00
2010-09-10 13:01:54 +00:00
var name = $( "#name" ),
email = $( "#email" ),
password = $( "#password" ),
allFields = $( [] ).add( name ).add( email ).add( password ),
tips = $( ".validateTips" );
2009-01-29 20:14:30 +00:00
2010-09-10 13:01:54 +00:00
function updateTips( t ) {
2009-08-29 02:12:56 +00:00
tips
2010-09-10 13:01:54 +00:00
.text( t )
.addClass( "ui-state-highlight" );
2009-08-29 02:12:56 +00:00
setTimeout(function() {
2010-09-10 13:01:54 +00:00
tips.removeClass( "ui-state-highlight", 1500 );
}, 500 );
2009-01-29 20:14:30 +00:00
}
2010-09-10 13:01:54 +00:00
function checkLength( o, n, min, max ) {
2009-01-29 20:14:30 +00:00
if ( o.val().length > max || o.val().length < min ) {
2010-09-10 13:01:54 +00:00
o.addClass( "ui-state-error" );
updateTips( "Length of " + n + " must be between " +
min + " and " + max + "." );
2009-01-29 20:14:30 +00:00
return false;
} else {
return true;
}
}
2010-09-10 13:01:54 +00:00
function checkRegexp( o, regexp, n ) {
2009-01-29 20:14:30 +00:00
if ( !( regexp.test( o.val() ) ) ) {
2010-09-10 13:01:54 +00:00
o.addClass( "ui-state-error" );
updateTips( n );
2009-01-29 20:14:30 +00:00
return false;
} else {
return true;
}
}
2010-09-10 13:01:54 +00:00
$( "#dialog-form" ).dialog({
2009-01-29 21:48:09 +00:00
autoOpen: false,
2009-01-07 03:40:05 +00:00
height: 300,
2009-08-29 02:12:56 +00:00
width: 350,
2008-12-29 17:26:17 +00:00
modal: true,
buttons: {
2010-09-10 13:01:54 +00:00
"Create an account": function() {
2009-01-29 20:14:30 +00:00
var bValid = true;
2010-09-10 13:01:54 +00:00
allFields.removeClass( "ui-state-error' );
2009-01-29 20:14:30 +00:00
2010-09-10 13:01:54 +00:00
bValid = bValid & & checkLength( name, "username", 3, 16 );
bValid = bValid & & checkLength( email, "email", 6, 80 );
bValid = bValid & & checkLength( password, "password", 5, 16 );
2009-01-29 20:14:30 +00:00
2010-09-10 13:01:54 +00:00
bValid = bValid & & checkRegexp( name, /^[a-z]([0-9a-z_])+$/i, "Username may consist of a-z, 0-9, underscores, begin with a letter." );
2009-01-29 20:14:30 +00:00
// From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
2010-09-10 13:01:54 +00:00
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( "< tr > " +
"< td > " + name.val() + "< / td > " +
"< td > " + email.val() + "< / td > " +
"< td > " + password.val() + "< / td > " +
"< / tr > " );
$( this ).dialog( "close" );
2009-01-29 20:14:30 +00:00
}
2008-12-29 17:26:17 +00:00
},
Cancel: function() {
2010-09-10 13:01:54 +00:00
$( this ).dialog( "close" );
2008-12-29 17:26:17 +00:00
}
2009-01-29 20:14:30 +00:00
},
close: function() {
2010-09-10 13:01:54 +00:00
allFields.val( "" ).removeClass( "ui-state-error" );
2008-12-29 17:26:17 +00:00
}
2008-12-31 01:20:50 +00:00
});
2010-09-10 13:01:54 +00:00
$( "#create-user" )
2010-01-07 03:19:50 +00:00
.button()
.click(function() {
2010-09-10 13:01:54 +00:00
$( "#dialog-form" ).dialog( "open" );
2010-01-07 03:19:50 +00:00
});
2008-12-31 01:20:50 +00:00
});
< / script >
< / head >
< body >
2008-12-30 17:47:22 +00:00
< div class = "demo" >
2009-07-11 14:00:08 +00:00
< div id = "dialog-form" title = "Create new user" >
2009-08-29 02:12:56 +00:00
< p class = "validateTips" > All form fields are required.< / p >
2008-12-31 01:20:50 +00:00
< form >
2008-12-29 17:26:17 +00:00
< fieldset >
< label for = "name" > Name< / label >
2009-01-29 21:48:09 +00:00
< input type = "text" name = "name" id = "name" class = "text ui-widget-content ui-corner-all" / >
2008-12-29 17:26:17 +00:00
< label for = "email" > Email< / label >
2009-01-29 21:48:09 +00:00
< input type = "text" name = "email" id = "email" value = "" class = "text ui-widget-content ui-corner-all" / >
2008-12-29 17:26:17 +00:00
< label for = "password" > Password< / label >
2009-01-29 21:48:09 +00:00
< input type = "password" name = "password" id = "password" value = "" class = "text ui-widget-content ui-corner-all" / >
2008-12-29 17:26:17 +00:00
< / fieldset >
2008-12-31 01:20:50 +00:00
< / form >
2008-12-30 17:47:22 +00:00
< / div >
2008-12-31 01:20:50 +00:00
2009-01-29 21:48:09 +00:00
< div id = "users-contain" class = "ui-widget" >
2010-09-10 13:01:54 +00:00
< h1 > Existing Users:< / h1 >
2009-01-29 21:48:09 +00:00
< table id = "users" class = "ui-widget ui-widget-content" >
< thead >
< tr class = "ui-widget-header " >
< th > Name< / th >
< th > Email< / th >
< th > Password< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > John Doe< / td >
< td > john.doe@example.com< / td >
< td > johndoe1< / td >
< / tr >
< / tbody >
< / table >
< / div >
2010-01-07 03:19:50 +00:00
< button id = "create-user" > Create new user< / button >
2008-12-29 17:26:17 +00:00
2008-12-30 17:47:22 +00:00
< / div > <!-- End demo -->
2010-09-10 13:01:54 +00:00
< div class = "demo-description" >
< p > Use a modal dialog to require that the user enter data during a multi-step process. Embed form markup in the content area, set the < code > modal< / code > option to true, and specify primary and secondary user actions with the < code > buttons< / code > option.< / p >
2008-12-30 17:47:22 +00:00
< / div > <!-- End demo - description -->
2008-12-31 01:20:50 +00:00
< / body >
< / html >