2012-09-10 15:33:46 +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 >
2013-12-02 18:36:12 +00:00
< link rel = "stylesheet" href = "../../themes/base/all.css" >
2014-06-10 11:55:45 +00:00
< script src = "../../external/jquery/jquery.js" > < / script >
2013-12-02 18:36:12 +00:00
< script src = "../../ui/core.js" > < / script >
< script src = "../../ui/widget.js" > < / script >
< script src = "../../ui/mouse.js" > < / script >
< script src = "../../ui/button.js" > < / script >
< script src = "../../ui/draggable.js" > < / script >
< script src = "../../ui/position.js" > < / script >
< script src = "../../ui/resizable.js" > < / script >
< script src = "../../ui/dialog.js" > < / script >
< script src = "../../ui/effect.js" > < / script >
2010-09-10 13:01:54 +00:00
< 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() {
2014-04-24 17:19:50 +00:00
var dialog, form,
// From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29
emailRegex = /^[a-zA-Z0-9.!#$%& '*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
name = $( "#name" ),
2010-09-10 13:01:54 +00:00
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;
}
}
2012-09-10 15:33:46 +00:00
2014-04-24 17:19:50 +00:00
function addUser() {
var valid = true;
allFields.removeClass( "ui-state-error" );
valid = valid & & checkLength( name, "username", 3, 16 );
valid = valid & & checkLength( email, "email", 6, 80 );
valid = valid & & checkLength( password, "password", 5, 16 );
valid = valid & & checkRegexp( name, /^[a-z]([0-9a-z_\s])+$/i, "Username may consist of a-z, 0-9, underscores, spaces and must begin with a letter." );
valid = valid & & checkRegexp( email, emailRegex, "eg. ui@jquery.com" );
valid = valid & & checkRegexp( password, /^([0-9a-zA-Z])+$/, "Password field only allow : a-z 0-9" );
if ( valid ) {
$( "#users tbody" ).append( "< tr > " +
"< td > " + name.val() + "< / td > " +
"< td > " + email.val() + "< / td > " +
"< td > " + password.val() + "< / td > " +
"< / tr > " );
dialog.dialog( "close" );
}
return valid;
}
dialog = $( "#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: {
2014-04-24 17:19:50 +00:00
"Create an account": addUser,
2008-12-29 17:26:17 +00:00
Cancel: function() {
2014-04-24 17:19:50 +00:00
dialog.dialog( "close" );
2008-12-29 17:26:17 +00:00
}
2009-01-29 20:14:30 +00:00
},
close: function() {
2014-04-24 17:19:50 +00:00
form[ 0 ].reset();
allFields.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
2014-04-24 17:19:50 +00:00
form = dialog.find( "form" ).on( "submit", function( event ) {
event.preventDefault();
addUser();
});
$( "#create-user" ).button().on( "click", function() {
dialog.dialog( "open" );
});
2008-12-31 01:20:50 +00:00
});
< / script >
< / head >
< body >
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 >
2014-04-24 17:19:50 +00:00
< fieldset >
< label for = "name" > Name< / label >
< input type = "text" name = "name" id = "name" value = "Jane Smith" class = "text ui-widget-content ui-corner-all" >
< label for = "email" > Email< / label >
< input type = "text" name = "email" id = "email" value = "jane@smith.com" class = "text ui-widget-content ui-corner-all" >
< label for = "password" > Password< / label >
< input type = "password" name = "password" id = "password" value = "xxxxxxx" class = "text ui-widget-content ui-corner-all" >
<!-- Allow form submission with keyboard without duplicating the dialog button -->
< input type = "submit" tabindex = "-1" style = "position:absolute; top:-1000px" >
< / 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
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 >
2012-09-10 15:33:46 +00:00
< / div >
2008-12-31 01:20:50 +00:00
< / body >
< / html >