引导提交表单显示从javascript计时器
Bootstrap submit form displayed from javascript timer
我试图创建一个从javascript显示延迟的模态表单。
当我用按钮(onClick事件)启动模态表单时,参数被正确地提交给表单,但是当表单从计时器(使用setTimeout)显示时,模态表单被显示,但参数没有传递给表单。这两种情况都在下面的示例中。任何帮助/链接是非常感谢。我就是不明白这两个选项有什么不同:
<!doctype html>
<head>
<link href="http://www.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="http://www.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script>
</head>
<body>
Main Page
<div id="thanks"><p><a data-toggle="modal" href="#form-content" class="btn btn-primary">Contact us</a></p></div>
<!-- model content -->
<div id="form-content" class="modal hide fade in" style="display: none; ">
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3>Contact us</h3>
</div>
<div>
<form class="contact">
<fieldset>
<div class="modal-body">
<ul class="nav nav-list">
<li class="nav-header">Name</li>
...
</fieldset>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-success" id="submit">submit</button>
<a href="#" class="btn" data-dismiss="modal">Close</a>
</div> </div>
<script>
$(document).ready(function() {
setTimeout(function() {
timeTriggeredModal();//
}, 300); // milliseconds
});
//>>>This does not work <<<<<<
function timeTriggeredModal() {
$('#form-content').fadeIn(300)(function(){
$.ajax({
type: "POST",
url: "process.php",
data: $('form.contact').serialize(),
success: function(msg){
// $("#thanks").html(msg)
$("#form-content").modal('hide');
},
error: function(){
alert("failure");
}
});
});
};
//>>>>>>>>This works<<<
$(function() {
//twitter bootstrap script
$("button#submit").click(function(){
$.ajax({
type: "POST",
url: "process.php",
data: $('form.contact').serialize(),
success: function(msg){
// $("#thanks").html(msg)
$("#form-content").modal('hide');
},
error: function(){
alert("failure");
}
});
});
});
</script>
</body>
</html>
参见示例:http://www.heartlink.co.uk/heartlink/test4/
你可以这样写:
<script>
$(document).ready(function() {
setTimeout(function() {
$("#form-content").modal('show'); //this will show your modal
}, 300); // milliseconds
$("button#submit").click(function(){ //this will handle the form submission upon clicking the submit button
$.ajax({
type: "POST",
url: "process.php",
data: $('form.contact').serialize(),
success: function(msg){
// $("#thanks").html(msg)
$("#form-content").modal('hide');
},
error: function(){
alert("failure");
}
});
});
});
</script>
setTimeout可以调用一个单独的函数来显示模态,但是你不能随机地将一个ajax函数传递给fadeIn函数,因为该函数被设计为在动画完成时运行(这不会给用户任何填写表单的机会)。即便如此,当您在fadeIn方法中使用完整函数时,您可以使用逗号将淡出行为的持续时间与完整函数分开,而不是像您在括号中那样(仅供参考)。
此外,虽然fadeIn可以工作,但Bootstrap有自己的方法来显示和隐藏模态。使用上面代码中所示的.modal('show')
方法可能更容易。
无论表单如何显示,您的点击处理程序都将负责表单提交,因此您不必担心重复ajax调用。
相关文章:
- 在 Node.Js 脚本中使用 Javascript 计时器在特定时间触发事件
- Javascript 计时器只调用一次 Code 隐藏方法
- 重置图像滑块的Javascript计时器
- 正在停止Javascript计时器
- I'我试图让这个javascript计时器启动onclick,但它不会启动
- javascript计时器事件
- 如何向JavaScript计时器添加控件
- Javascript计时器在每次回发时进行初始化
- javascript计时器不工作
- JavaScript计时器|随机行为
- iPad JavaScript计时器停止运行检测睡眠模式
- JavaScript 计时器禁用功能
- JavaScript 计时器在第一次按键时启动
- 如何在刷新页面时停止重置 JavaScript 计时器
- 1 页上有多个 JavaScript 计时器
- Javascript 计时器性能
- 同步 Javascript 计时器
- 如何让 AJAX 使用 rails 和 JavaScript 计时器工作
- 我可以在移动浏览器中使用javascript计时器吗?
- Javascript计时器只有几分钟和几秒钟