【发布时间】:2014-08-23 12:14:27
【问题描述】:
我在下面有一个简单的脚本,可以动态创建新的 html 表单。当我尝试单独提交一个时,它会提交(this)点击的表单,然后提交所有紧随其后的表单。
实在看不出这里有什么bug(代码):
<script type="text/javascript">
(function ($) {
$(function () {
var addFormGroup = function (event) {
event.preventDefault();
var $formGroup = $(this).closest('.form-group');
var $multipleFormGroup = $formGroup.closest('.multiple-form-group');
var $formGroupClone = $formGroup.clone();
$(this)
.toggleClass('btn-success btn-add btn-danger btn-remove')
.html('–');
$formGroupClone.find('input').val('');
$formGroupClone.find('.concept').text('Phone');
$formGroupClone.insertAfter($formGroup);
var $lastFormGroupLast = $multipleFormGroup.find('.form-group:last');
if ($multipleFormGroup.data('max') <= countFormGroup($multipleFormGroup)) {
$lastFormGroupLast.find('.btn-add').attr('disabled', true);
}
$('form').on('submit', function(event) {
event.preventDefault();
$(this).attr('disabled', 'disabled');
$( this ).serialize();
var weburl = $(this).find(".web_url").val();
var width = $(this).find(".width").val();//$('.width').val();
var height = $(this).find(".height").val();//$('.height').val();
var dee = <?php echo $deet[0]->id; ?>;
$.post( "mde", { weburl: weburl, width: width, height: height, dee: dee })
.done(function( data ) {
u = data;
alert(u);
});
//$.get(u);
});
};
var removeFormGroup = function (event) {
event.preventDefault();
var $formGroup = $(this).closest('.form-group');
var $multipleFormGroup = $formGroup.closest('.multiple-form-group');
var $lastFormGroupLast = $multipleFormGroup.find('.form-group:last');
if ($multipleFormGroup.data('max') >= countFormGroup($multipleFormGroup)) {
$lastFormGroupLast.find('.btn-add').attr('disabled', false);
}
$formGroup.remove();
};
var selectFormGroup = function (event) {
event.preventDefault();
var $selectGroup = $(this).closest('.input-group-select');
var param = $(this).attr("href").replace("#","");
var concept = $(this).text();
$selectGroup.find('.concept').text(concept);
$selectGroup.find('.input-group-select-val').val(param);
}
var countFormGroup = function ($form) {
return $form.find('.form-group').length;
};
$(document).on('click', '.btn-add', addFormGroup);
$(document).on('click', '.btn-remove', removeFormGroup);
});
})(jQuery);
</script>
<script>
$( document ).ready(function() {
// Handler for .ready() called.
$('form').on('submit', function(event) {
event.preventDefault();
$(this).attr('disabled', 'disabled');
$( this ).serialize();
var weburl = $(this).find(".web_url").val();
var width = $(this).find(".width").val();//$('.width').val();
var height = $(this).find(".height").val();//$('.height').val();
var dee = <?php echo $deet[0]->id; ?>;
$.post( "mde", { weburl: weburl, width: width, height: height, dee: dee })
.done(function( data ) {
u = data;
alert(u);
});
//$.get(u);
});
});
</script>
【问题讨论】:
-
为什么将函数包装在一个函数中并混合使用 document.ready 和 $(function( ? - 你分配了两个表单提交。完全删除第二个脚本。而且每次克隆时,你添加另一个提交事件
-
啊——我的错,我把它放在了自己的文件中。刚刚复制到这里
标签: javascript jquery html forms twitter-bootstrap