我有一个标准的基于html的帖子表单,提交数据到php-我有一个下拉列表,我希望用户在使用此表单时添加项目,所以我已经设置了一个灯箱(使用fancybox)提交jquery帖子到服务器。问题是 - 即使我使用的div是在主要和结束标签之外,“添加专辑”表格仍然提交主要表格?
这是我的代码
<div style="display:none">
<form id="login_form" method="post" action="">
<p id="login_error">Please, enter data</p>
<p>
<label for="album_title">Album title</label>
<input type="text" id="album_title" name="album_title" size="30" />
</p>
<p>
<label for="album_description">Album Description</label>
<input type="text" id="album_description" name="album_description" size="30" />
</p>
<p>
<input type="submit" value="Login" />
</p>
<p>
<em>Leave empty so see resizing</em>
</p>
</form>
</div>
<?=form_open_multipart('socialmedia/add_picstation');?>
<div class="error"><? echo validation_errors(); ?></div>
<table width="500" align="left" >
<tr>
<td colspan="2">
If no image is provided through the station- the default image uploaded below will be used
</td>
</tr>
<tr>
<td class="table_left"><?=form_label('Status', 'title');?></td>
<td class="table_right"><?=form_input(array('name'=>'title', 'id'=>'title','style' => 'width:80%'));?></td>
</tr>
<tr>
<td class="table_left"><?=form_label('Album', 'album_id',array('id'=>'select_albums'));?></td>
<td><?=form_dropdown('album_id',$users_albums)?> <a class="iframe" href="<?=base_url()?>/socialmedia/add_album/">This goes to iframe</a>
<a id="tip5" title="Login" href="#login_form">Try now</a>
</td>
</tr>
<tr>
<td></td>
<td class="table_right">
<div><label><input type="radio" name="group1" value="opt2">WEB CAM PIC</label></div>
<div><label><input type="radio" name="group1" value="opt1">UPLOAD PIC</label></div>
</td>
</tr>
<tr>
<td></td>
<td style="text-align:right;padding-right:70px"><?=form_submit('g','Add');?>
<?=form_close();?>
</td>
</tr>
</table>
和我的js来处理表单
$("#tip5").fancybox({
'scrolling' : 'no',
'titleShow' : false,
'onStart' :function() {
$("#login_error").hide();
},
'onClosed' : function() {
$("#login_error").hide();
}
});
$("#login_form").bind("submit", function() {
if ($("#album_title").val().length < 1 || $("#login_pass").val().length < 1) {
$("#login_error").show();
$.fancybox.resize();
return false;
}
$.fancybox.showActivity();
$.ajax({
type : "POST",
cache : false,
url : '<?=base_url()?>/socialmedia/add_album/',
data : $(this).serializeArray(),
success: function(data) {
$.fancybox(data);
}
});
return false;
});
问题似乎是主要表单由div的提交按钮提交
更新
我几乎把这个例子复制到了http://fancybox.net/blog(tip5),因为它几乎完成了我想要的 - 问题只是登录表单提交了错误的表单,即使div出现在表单标签之外主要形式
答案 0 :(得分:0)
如果您想提交单独的操作网址,则需要阻止主表单发送:
$('.button').click(function(e) {
e.preventDefault();
// Call your AJAX here
});