jQuery UI确认多种形式对话框
-
28-09-2019 - |
题
我在同一页面上有几个表格,我想使用相同的代码向所有内容添加确认对话框。他们都有一类确认形式,应动态生成确认对话框的标题(该对话框不起作用)。
在html中,我有“对话框”,该对话框被隐藏在页面加载时,然后将其显示 dialog('open')
函数被调用。
这是我现在所拥有的,它根本不起作用,对话框加载,但是一旦按确认,它就会重复很多否定的条款,并且不会提交表格:
var deleteConfirmed = false;
$('form.confirm-form').submit(function(e) {
if ( ! deleteConfirmed)
{
e.preventDefault();
var title = $(this).find('input.action').val();
var $this = $(this);
console.log('title: ' + title);
$('#confirm-dialog').attr('title', title);
$('#confirm-dialog').dialog({
buttons : {
"Confirm" : function() {
deleteConfirmed = true;
$(this).dialog('close');
$this.submit();
},
"Cancel" : function() {
$(this).dialog('close');
}
}
});
$('#confirm-dialog').dialog('open');
}
else
{
$(this).submit();
deleteConfirmed = false;
}
});
解决方案
编辑
这是一种可能的解决方案。自从我在JSFiddle上获得了一些异常行为以来,我已经在Live服务器上进行了测试。注意:我报废了原始帖子,因为它没有解决多种形式。并且最有可能提交表格将与Ajax提交。
X.html的来源
<!DOCTYPE html>
<html>
<head><title>SO</title>
<script
type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">
</script>
<script
type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js">
</script>
<link
rel="stylesheet"
type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/ui-lightness/jquery-ui.css"/>
</head>
<body>
<div id="dlg1"></div>
<form method="post" action="/so/x.php" id="frm1" name="frm1">
<input type="text"><br />
<input type="submit" class="submitter_btn" id="frm1_submit">
</form>
<form method="post" action="/so/x.php" id="frm2" name="frm2">
<input type="text"><br />
<input type="submit" class="submitter_btn" id="frm2_submit">
</form>
<form method="post" action="/so/x.php" id="frm3" name="frm3">
<input type="text"><br />
<input type="submit" class="submitter_btn" id="frm3_submit">
</form>
<script type="text/javascript">
var $current = { form : null, do_submit : false };
$('#dlg1').dialog({
title: "Confirmation",
width: 300,
height: 200,
autoOpen: false,
modal: true,
buttons : {
"Confirm" : function(e){
$current.do_submit = true;
$(this).dialog('close');
},
"Cancel" : function(e){
$current.do_submit = false;
$(this).dialog('close');
}
}
});
$('#dlg1').bind('dialogbeforeclose', function(){
if($current.do_submit){
($current.form).submit();
$current.form = null;
$current.do_submit = false;
}
});
$('.submitter_btn').click(function(e){
e.preventDefault();
$current.form = $(this).parents('form:first');
$('#dlg1').dialog('open');
});
</script>
</body>
</html>
X.php的来源
<?php
echo "HELLO";
其他提示
我曾经经过家庭酿造的验证,直到发现 这个脚本. 。它的脑部损伤要小得多,并且似乎对形式元素的任何类型或组合都做得很好。每个元素只有一个类声明至少打开验证。要每页执行两个(或更多),您只需对每个表单ID或名称实例化一个。相当容易!
不隶属于 StackOverflow