Reputation: 865
Here's my form that's in my modal window:
I have no close button and I have disabled the window from closing on pressing esc. I want to be able to submit the form data on pressing submit or on pressing the enter key.
<div class="modal hide fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
<div class="modal-header">
<h3 id="myModalLabel">Enter your Credentials</h3>
</div>
<div class="modal-body">
<form id="login-form" class="form-horizontal" accept-charset="UTF-8" data-remote="true"">
<div class="control-group">
<label class="control-label" for="inputEmail">Email</label>
<div class="controls">
<input type="email" id="email" name="email" value="" placeholder="Email">
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputPassword">Password</label>
<div class="controls">
<input type="password" id="passwd" name="passwd" value="" placeholder="Password">
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox"> Remember me
</label>
<input type="submit" id="login" value="Login"class="btn btn-primary" />
</div>
</div>
</form>
</div>
</div>
Here's the script I'm using:
$(document).ready(function(){
$('#myModal').modal('show');
});
function submitLogin() {
$.ajax({
url:"login_mysql.php",
type:'POST',
dataType:"json",
data: $("#login-form").serialize()
}).done(function(data){
//do something
});
}
$('#passwd').keypress(function(e) {
if (e.which == '13') {
submitLogin();
}
});
$('#login').click(function(){
submitLogin();
});
On pressing enter after keying in my password or clicking on the submit button the same page reloads and the ajax script does not run. Could someone tell me if my script is clashing with the default settings of my modal window?
Upvotes: 26
Views: 76295
Reputation: 1
I have done that where the submit form would open in modal dialog box and, after that, submit the whole entry in the fields. If you click on submit button, entry would done on the database and instantly the page is redirected to same page with new data. There is no need to refresh to see the recent entered data. Hope this helps.
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">ADD CONTENT</button>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Please Add Content</h4>
</div>
<div class="modal-body">
<form role="form" action="" method="POST">
<!-- YOUR HTML FORM GOES HERE--->
<button type="submit" name="submit" class="btn btn-primary btn-lg"id="sub" onclick="SUBMISSION()" >Submit </button>
</fieldset>
</form>
<?php
if(isset($_POST['submit']))
{
SUBMISSION();
}
function SUBMISSION()
{
// UR CONNECTION ESTABLISHMENT CODE GOES HERE
// SQL QUERY FOR INSERTION IN FIELDS
echo"<script type=\"text/javascript\">
document.location.href='http://localhost/dict/pages/YOURPAGE.php';
</script>";
$conn->CLOSE();
}
?>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.col-lg-12 -->
Upvotes: 0
Reputation: 665
EDIT: 2. Try removing data-keyboard="false".
Upvotes: 0
Reputation: 22817
Listen to form submit
event - it gets triggered by both enter and click events.
Markup
<form id="yourForm">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Submit">
</form>
JS
$('#yourForm').submit(function(event){
// prevent default browser behaviour
event.preventDefault();
//do stuff with your form here
...
});
Upvotes: 36