Javascript 如何在jquery中获取动态创建表单的id
我使用引导模式来显示ASP.NETMVC5表单,该表单使用对相关控制器的jQueryAjax调用动态插入到div中,然后打开 我需要截取表单的提交,因此我希望绑定到jquery中表单的提交事件,但到目前为止只能绑定到所有表单的提交事件,因为在呈现主视图时,动态表单当然不存在,例如Javascript 如何在jquery中获取动态创建表单的id,javascript,jquery,asp.net-mvc,forms,Javascript,Jquery,Asp.net Mvc,Forms,我使用引导模式来显示ASP.NETMVC5表单,该表单使用对相关控制器的jQueryAjax调用动态插入到div中,然后打开 我需要截取表单的提交,因此我希望绑定到jquery中表单的提交事件,但到目前为止只能绑定到所有表单的提交事件,因为在呈现主视图时,动态表单当然不存在,例如 $('form').submit(...) 而不是 $('#serverForm').submit(...) 虽然这类工作正常,但它有一个问题,在这个视图中,我实际上有3种不同的动态形式,可以使用模态弹出窗口显示,
$('form').submit(...)
而不是
$('#serverForm').submit(...)
虽然这类工作正常,但它有一个问题,在这个视图中,我实际上有3种不同的动态形式,可以使用模态弹出窗口显示,因此我需要做以下两件事之一:
用于拦截每个表单的提交事件的IdeAllyManager。
B在全局表单事件处理程序中,标识已提交的表单
我已经尝试了我能想象到的使用选项A的每一个选项,包括向弹出模式的代码添加绑定。一切都没有成功
我目前正在尝试选择B,这样我就可以决定在哪里张贴表格。这至少在提交表单时会被调用,但我的问题是,我无法获取已提交表单的id或名称,因此无法知道它是哪一个
我有以下处理程序:
<script>
$(function () {
$('form').submit(function(e) {
// this is always null
var id = $(this).attr('id');
$.ajax({
url: '@Url.Action("EditServer", "AccountAdmin")',
data: new FormData(this),
...
});
});
});
</script>
我尝试在ajax调用后添加处理程序,以填充模式,如下所示:
$(".server-link").click(function (event) {
event.preventDefault();
$.ajax({
url: $(this).attr("href"),
cache: false,
type: "GET",
dataType: "html",
success: function (data, textStatus, XMLHttpRequest) {
$('#serverDiv').html(data);
$('#serverModal').modal('show');
$('form').submit(function (e) {
var id = $(this).attr(id);
// test to see if handler called
alert(id);
});
},
error: function (jgXHR, textStatus, errorThrown) {
//The commented out message is full of Html but includes compilation errors etc from the server
//alert('An error occured: ' + jgXHR.responseText);
alert(textStatus + ':' + errorThrown);
}
});
});
它快把我逼疯了!我尝试过各种帖子中的各种想法组合,但毫无乐趣。我需要张贴使用FormData至少在一个案例中,因为有一个文件上传图像涉及。非常感谢您提供的任何帮助。请使用以下内容:
var id = $(e.target).attr('id');
问题是JavaScript代码在表单实际添加到页面之前就已经运行了。使用AJAX时,需要在回调中运行所需的任何JavaScript:
$.get('/some/url', function (result) {
$('#whatever').html(result);
$('form').submit(function(e) {
var id = $(this).prop('id');
// do whatever with id
});
});
this.id和$this.attr'id'都应生成所提交表单的id。你确定它有身份证吗?它是如何生成的?你是如何插入表单的?@david这就是人们期望它能够工作的方式——我刚刚测试了一个静态示例,果然没有。事件目标不获取相关信息though@David泰德,谢谢你们。主视图在每个div周围都有元素,这些元素将保存一个模态。如果没有这些,则永远不会捕获提交事件。在David的提示下,我给了这些虚拟表单元素id,果然我现在得到了一个id,但它是虚拟表单的一个,而不是已经提交的实际表单。我想我的选项A是最好的方法,但我无法使用.on动态绑定提交事件。我想你不知道怎么会这样?再次感谢。约翰,谢谢你。我尝试了以下方法,但未捕获该事件。无法在此处插入代码,因此将添加答案。不要添加答案。更新您的问题。您确定正在调用窗体上的事件处理程序吗?在$'form'上使用console.log并确保jQuery实际匹配了某些内容。你还应该考虑用你的MODE ID来选择选择器,以防万一页面上有一个以上的表单,也就是“MyAWHeSeMeMod表格”。谢谢你的帮助。你的方法确实是需要的,特别是为了克服我的某些愚蠢行为:-。我们开始运行了!
$.get('/some/url', function (result) {
$('#whatever').html(result);
$('form').submit(function(e) {
var id = $(this).prop('id');
// do whatever with id
});
});