Javascript 通过jQuery处理具有动态HTML元素ID的多个表单
我的php页面会根据通过第三方api接收的数据生成多个表单 我的要求是为这些动态生成的表单元素处理jQuery模式确认,但我不知所措,因为在我的情况下jQuery无法处理这个问题 我也尝试过JSFIDLE,但无法使其工作 编辑:脚本没有太大问题,但fiddle添加了windo onLoad,这会干扰脚本:Javascript 通过jQuery处理具有动态HTML元素ID的多个表单,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我的php页面会根据通过第三方api接收的数据生成多个表单 我的要求是为这些动态生成的表单元素处理jQuery模式确认,但我不知所措,因为在我的情况下jQuery无法处理这个问题 我也尝试过JSFIDLE,但无法使其工作 编辑:脚本没有太大问题,但fiddle添加了windo onLoad,这会干扰脚本: window.onload=function(){ function formSubmit(formId) { alert('here'); var submitForm =
window.onload=function(){
function formSubmit(formId) {
alert('here');
var submitForm = $('#form_twake' + formId);
...
模态确认div(“表单中的confirm”)也应该保持隐藏,但我可以看到它也出现在fiddle中
我知道我错过了一些非常基本的东西,因为我不能拉小提琴去工作,但到目前为止我完全不知所措;我对这个主题的研究导致通过jQuery创建id或通过jQuery提交表单,但我不想走这条路,除非当前的流程不可行
表单生成得很好,一个常规的html提交会产生期望的结果;但是没有模态确认
关于如何使用通用jQuery实现对生成表单的动态处理,有什么线索吗
jQuery
<script>
function formSubmit(id) {
var submitForm = $('#form_twake'+id);
submit = false;
$('#confirm'+id).dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
'Submit': function() {
$(this).dialog('close');
submit = true;
submitForm.submit();
},
'Cancel': function() {
$(this).dialog('close');
}
}
});
//$("#confirm").parent().appendTo($("#form_twake"));
submitForm.submit(function() {
if (submit) {
return true;
} else {
$("#confirm"+id).dialog('open');
return false;
}
});
};
</script>
功能表单提交(id){
var submitForm=$(“#form_twake”+id);
提交=错误;
$('#确认'+id).对话框({
可调整大小:false,
身高:140,
莫代尔:是的,
自动打开:错误,
按钮:{
“提交”:函数(){
$(this.dialog('close');
提交=真;
submitForm.submit();
},
“取消”:函数(){
$(this.dialog('close');
}
}
});
//$(“#确认”).parent().appendTo($(“#表单”);
submitForm.submit(函数(){
如果(提交){
返回true;
}否则{
$(“#确认”+id).dialog('open');
返回false;
}
});
};
生成表单的PHP:
<html>
<body>
<center>
<div><img src="includes/static/logo.png" alt="Twake"/></div>
</br>
<?php
try {
$suffix = 0;
foreach ( $json ['users'] as $bud ) {
$keys = array_keys ( $bud );
$suffix = $suffix + 1;
?>
<form id="form_twake<?php echo $suffix?>" name="form_twake<?php echo $suffix?>" method="POST" action="index.php" onsubmit="formSubmit(<?php echo $suffix?>)">
<div class="box fade-in one">
<input type="submit" value="Destroy" class="twake-button" />
<div id="confirm<?php echo $suffix?>" style="display: hidden;" title="Bin user?">
<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>Confirm cleanup of the user <?php echo $bud ['name'];?>?</p>
</div>
</div>
</form>
<?php
}
}
catch (Exception $e) {
echo 'Please check your connection and try again. ' . $e->getMessage();
}
;
?>
</center>
</body>
</html>
?
保存参数和使用参数有点不好,只是不正确。
您可以做的是将此值存储在表单内的属性中
submitForm.attr('extraData', false);
$('#confirm'+id).dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
'Submit': function() {
$(this).dialog('close');
submitForm.attr('extraData', true);
submitForm.submit();
},
'Cancel': function() {
$(this).dialog('close');
}
}
});
submitForm.submit(function() {
var submit = $('#submitForm').attr('extraData');
if (submit) {
return true;
} else {
$("#confirm"+id).dialog('open');
return false;
}
}))
或
只需编写一个函数即可。定义一个函数在表单提交时要做什么就像调用一个普通函数,但不将它和表单的特定事件联系起来。
例如:
$('#confirm'+id).dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
'Submit': function() {
$(this).dialog('close');
DoWork(true);
},
'Cancel': function() {
$(this).dialog('close');
}
}
});
function DoWork (isSubmit) {
if (!isSubmit) $("#confirm"+id).dialog('open');
}
我对它进行了一些修改,将其发布在这里,因为它也可以对其他人有所帮助
<script>
var submitForm = null;
var id = 0;
var submit = false;
function formSubmit(formId) {
id = formId;
submitForm = $('#form_twake'+id)
alert(id);
$('#confirm'+id).dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: false,
buttons: {
'Submit': function() {
$(this).dialog('close');
submit = true;
submitForm.submit();
},
'Cancel': function() {
$(this).dialog('close');
}
}
});
//$("#confirm").parent().appendTo($("#form_twake"));
twakeSubmit(submit);
}
function twakeSubmit(isSubmit) {
if (isSubmit) {
return true;
} else {
$("#confirm"+id).dialog('open');
return false;
}
}
</script>
var submitForm=null;
var-id=0;
var submit=false;
函数formSubmit(formId){
id=formId;
submitForm=$(“#form_twake”+id)
警报(id);
$('#确认'+id).对话框({
可调整大小:false,
身高:140,
莫代尔:是的,
自动打开:错误,
按钮:{
“提交”:函数(){
$(this.dialog('close');
提交=真;
submitForm.submit();
},
“取消”:函数(){
$(this.dialog('close');
}
}
});
//$(“#确认”).parent().appendTo($(“#表单”);
twakeSubmit(提交);
}
功能twakeSubmit(isSubmit){
如果(提交){
返回true;
}否则{
$(“#确认”+id).dialog('open');
返回false;
}
}
HTML/PHP代码
<html>
<body>
<center>
<div><img src="includes/static/logo.png" alt="Twake"/></div>
</br>
<?php
try {
$suffix = 0;
foreach ( $json ['users'] as $bud ) {
$keys = array_keys ( $bud );
$suffix = $suffix + 1;
?>
<form id="form_twake<?php echo $suffix?>" name="form_twake<?php echo $suffix?>" method="POST" action="index.php">
<div class="box fade-in one">
<input type="button" value="Destroy" class="twake-button" onclick="formSubmit(<?php echo $suffix?>)"/>
<div id="confirm<?php echo $suffix?>" style="display: hidden;" title="Bin user?">
<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>Confirm cleanup of the user <?php echo $bud ['name'];?>?</p>
</div>
</div>
</form>
<?php
}
}
catch (Exception $e) {
echo 'Please check your connection and try again. ' . $e->getMessage();
}
;
?>
</center>
</body>
</html>
?
谢谢Ori,但我的基本问题是无法识别js函数本身中的表单。如果你看小提琴,我无法得到函数在提交时触发