为什么';t jQuery form.submit()调用封闭函数?
我正在尝试调用表单submit上的命名函数。代码如下:为什么';t jQuery form.submit()调用封闭函数?,jquery,forms,submit,Jquery,Forms,Submit,我正在尝试调用表单submit上的命名函数。代码如下: $(document).ready(function() { showPartnerSettings = function(e) { e.preventDefault(); var $dialogForm = $("<div />") .attr("id", "partner-settings-form") .append($loading.clone()) .load(envPat
$(document).ready(function() {
showPartnerSettings = function(e) {
e.preventDefault();
var $dialogForm = $("<div />")
.attr("id", "partner-settings-form")
.append($loading.clone())
.load(envPath + "/partner/settings?partnerid="+e.data.partnerId, null, function(){ $("#partner-settings-form").css("display", "block"); })
.dialog({
title: "Partner Settings",
modal: false,
resizable: false,
width: 580, //CPB 04.11.13
position:['middle',130],
"close" : function(){
var dialogid=$(this).parent("div").attr("id");
$("#Tabs ul li."+dialogid).remove();
$(this).remove();
$("#alertmod").remove();
//$link.removeClass('preventclick');
},
})
.dialog("open")
.css("display", "block");
return false;
};
$("#partner-settings-form").submit(function(event) { return showPartnerSettings(event); });
$(文档).ready(函数(){
showPartnerSettings=功能(e){
e、 预防默认值();
变量$dialogForm=$(“”)
.attr(“id”、“合作伙伴设置表”)
.append($loading.clone())
.load(envPath+“/partner/settings?partnerid=“+e.data.partnerid,null,function(){$(“#partner settings form”).css(“显示”、“块”);})
.对话({
标题:“合作伙伴设置”,
莫代尔:错,
可调整大小:false,
宽度:580,//CPB 04.11.13
位置:[‘中间’,130],
“关闭”:函数(){
var dialogid=$(this.parent(“div”).attr(“id”);
$(“#Tabs ul li.+dialogid).remove();
$(this.remove();
$(“#alertmod”).remove();
//$link.removeClass('preventclick');
},
})
.对话框(“打开”)
.css(“显示”、“块”);
返回false;
};
$(“#合作伙伴设置表”).submit(函数(事件){return showPartnerSettings(事件);});
当我在showPartnerSettings()上设置断点时,它不会在.submit()函数执行后中断。为什么
编辑:
以下是Jasen要求的HTML:
<div id="partner-settings-form" style="display: block; width: auto; min-height: 66.6875px; height: auto;" class="ui-dialog-content ui-widget-content" scrolltop="0" scrollleft="0">
<article class="sign_in form-dialog clearfix">
<div class="bg-form-dlg">
<div class="col_100 clearfix">
<h2>UPS Shipping Information</h2>
<form enctype="application/x-www-form-urlencoded" class="sign_in_form sign_up_form" action="" method="post"><div class="zend_form">
<div class="shippingdetails"><fieldset id="fieldset-account">
<div id="key-label" class="formlabel"><label for="key" class="required">Access Key: *</label></div>
<div id="key-element" class="formcontent">
<input type="text" name="key" id="key" value="CCA574143AD81C1A "></div>
<div id="id-label" class="formlabel"><label for="id" class="required">User ID: *</label></div>
<div id="id-element" class="formcontent">
<input type="text" name="id" id="id" value="argoworks"></div>
<div id="password-label" class="formlabel"><label for="password" class="required">Password: *</label></div>
<div id="password-element" class="formcontent">
<input type="text" name="password" id="password" value="Ubond007gun"></div>
<div id="account_number-label" class="formlabel"><label for="account_number" class="required">Account Number: *</label></div>
<div id="account_number-element" class="formcontent">
<input type="text" name="account_number" id="account_number" value="8X6124"></div>
<div id="address1-label" class="formlabel"><label for="address1" class="required">Address1: *</label></div>
<div id="address1-element" class="formcontent">
<input type="text" name="address1" id="address1" value="112.5 South La Brea Ave."></div>
<div id="address2-label" class="formlabel"><label for="address2" class="optional">Address2:</label></div>
<div id="address2-element" class="formcontent">
<input type="text" name="address2" id="address2" value=""></div>
<div id="phone-label" class="formlabel"><label for="phone" class="required">Phone: *</label></div>
<div id="phone-element" class="formcontent">
<input type="text" name="phone" id="phone" value="2147483647"></div>
<div id="city-label" class="formlabel"><label for="city" class="required">City: *</label></div>
<div id="city-element" class="formcontent">
<input type="text" name="city" id="city" value="Los Angeles"></div>
<div id="state-label" class="formlabel"><label for="state" class="required">State (code): *</label></div>
<div id="state-element" class="formcontent">
<input type="text" name="state" id="state" value="CA"></div>
<div id="country-label" class="formlabel"><label for="country" class="optional">Country:</label></div>
<div id="country-element" class="formcontent" style="">
<select name="country" id="country" class="dlg-select">
<option value="US" label="UNITED STATES" selected="selected">UNITED STATES</option>
<option>...etc...</option>
</select></div>
<div id="postal-label" class="formlabel"><label for="postal" class="required">Postal Code: *</label></div>
<div id="postal-element" class="formcontent">
<input type="text" name="postal" id="postal" value="90036"></div></fieldset></div>
<div>
<p><label id="configship-label"> </label>
<input type="submit" name="configship" id="configship" value="Save Information"></p></div></div></form></div>
</div>
</article>
UPS342hi</div>
UPS配送信息
访问密钥:*
用户ID:*
密码:*
账号:*
地址1:*
地址2:
电话:*
城市:*
国家(代码):*
国家:
美国
等
邮政编码:*
UPS342hi
我在您的帮助下发现了问题。我没有将.submit()附加到表单元素。现在我正在尝试修复该问题,但遇到了另一个问题。您知道如何从JS访问发布的表单数据吗?我需要访问名为“partnerId”的隐藏字段表单中。event.data中是否包含表单数据?感谢您的持续帮助。如果您以完全动态的方式创建
合作伙伴设置表单(首次加载页面时不存在html标记),则您的提交
事件注册将不会绑定到表单
您需要以稍微不同的方式将其连接起来:
$("body").on("submit", "#partner-settings-form", showPartnerSettings);
本例使用的是body
,理想情况下,您将选择一个在加载时尽可能靠近对话框的静态元素选择器
注:
如果您在提交时没有执行任何其他操作,那么可以去掉匿名函数
似乎奇怪的是,您正在为合作伙伴设置表单
的提交事件构建合作伙伴设置表单
如果我将console.log
作为showPartnerSettings
函数的第一行,我看到它在表单提交时被调用。你在哪里中断,在浏览器的调试控制台中看到了什么样的错误?@Jasen,我将断点放在e.preventDefault()上。没有错误。它只是忽略传递给.submit()的匿名函数处理程序的内容。在创建对话框之前,您是否有合作伙伴设置表单的html标记?如果有人回答了您的原始问题,请接受他们的回答。如果您有其他问题,请发布新问题。请不要在每次回答问题时更改您的OP。@BarbaraCaryBarnhill抱歉,我的意思是您的form在对话框调用之前定义了html标记。它是在页面最初加载后生成的吗?感谢您帮助我解决了我的问题。我修复了与您的建议稍有不同的问题。现在我有一个不同的问题。也许您也可以帮上忙?这是指向我的新问题的链接:抱歉,这是链接:好的,这是markdo的wn:[/link]希望这样做有效。关于您的第二点,我正在根据提交操作重新生成表单,以响应表单验证错误。我需要重新显示表单,并显示错误。