我现在正在养育这个问题一段时间,我找不到答案。
我正在使用Twitter Bootstrap和PHP / Mysql开发一个应用程序,我有一个简单的表单,我希望有一个jquery确认模式,如果单击确定应该发布表单,如果没有点击什么都没有应该发生。
现在我已经将表单和jquery简化为最低限度,但它仍然无效。
这是我现在的表格:
<div class="container-fluid">
<div class="row-fluid">
<form method="post" action="" data-confirm="Are you sure you want to delete?">
<div class="span6">
<div class="control-group">
<label class="control-label" for="inputIcon">Add New Network</label>
<div class="controls">
<div class="input-prepend">
<span class="add-on"><i class="icon-tag"></i></span>
<input class="input-xlarge span6" id="inputIcon" type="text" placeholder="Network Name" name="network">
</div>
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputIcon">Network Timezone</label>
<div class="controls">
<div class="input-prepend">
<span class="add-on"><i class="icon-globe"></i></span>
<?php echo $this->timezones; ?>
</div>
</div>
</div>
<div class="form-actions">
<button type="submit" name="save_network" class="btn btn-primary"><i class="icon-ok icon-white"></i> Save Network</button>
</div>
</div>
这是我正在使用的jquery:
/* confirmation dialogs */
$(document).ready(function() {
$('form[data-confirm]').submit(function() {
var form = this;
if (!$('#dataConfirmModal').length) {
$('body').append('<div id="dataConfirmModal" class="modal" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3 id="dataConfirmLabel">Please Confirm</h3></div><div class="modal-body"></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button><a class="btn btn-primary" id="dataConfirmOK">OK</a></div></div>');
}
$('#dataConfirmModal').find('.modal-body').text($(this).attr('data-confirm'));
$('#dataConfirmModal').modal({
show: true
});
$('a#dataConfirmOK').click(function() {
$("form").submit();
});
return false;
});
});
这是我的控制器中调用模型的函数
<?php
// if settings form was submitted, save settings data
if(isset($_POST['save_network']))
{
$this->model->insert_network('reports', $_POST);
}
?>
我不想要ajax左右,只是一个简单的表单提交,奇怪的是当我手动提交表单时,它完美地工作。表单中的数据保存在数据库中,但是当我使用jquery .submit();提交表单但没有保存。
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
在我的控制器中,我通过检查是否设置了按钮的名称值来检查表单是否已提交:
if(isset($_POST['save_network']))
{
$this->model->insert_network('reports', $_POST);
}
当你提交一个带有方形的表格时,按钮从不被点击; HENCE:没有BUTTON NAME SET ... UGH
对不起尖叫:D但是这让我忙了6个小时,然后才发现这真的是问题......从中吸取教训我永远不会忘记!
希望这有助于其他人:如果您使用jquery提交表单,并通过查看按钮名称检查是否在php中提交了表单...这就是您遇到的问题jquery直接提交表单只有设置表单字段的名称值,而不是输入按钮本身的名称值。
因此,不使用以下方式检查表单是否已提交:
if(isset($_POST['save_network']))
应该更好地检查一下:
if($_SERVER['REQUEST_METHOD'] == "POST")