Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 当jQuery处理表单时,在另一个表单中发生错误_Asp.net_Javascript_Jquery_Forms - Fatal编程技术网

Asp.net 当jQuery处理表单时,在另一个表单中发生错误

Asp.net 当jQuery处理表单时,在另一个表单中发生错误,asp.net,javascript,jquery,forms,Asp.net,Javascript,Jquery,Forms,我正在使用jQuery编写表单,遇到了一些困难 我的表单在静态页面(html)中运行良好。 但是,当我在动态页面(aspx)中使用表单时,表单的行为不正确。 我无法将项附加到表单并调用form.serialize函数 我认为当一个表单位于另一个表单中时会发生错误(.aspx代码需要用表单标记括起来) 我该怎么办 让我给出我的代码的简化版本: <form name="Form1" method="post" id="Form1"> some content <form name=

我正在使用jQuery编写表单,遇到了一些困难

我的表单在静态页面(html)中运行良好。
但是,当我在动态页面(aspx)中使用表单时,表单的行为不正确。 我无法将项附加到表单并调用form.serialize函数

我认为当一个表单位于另一个表单中时会发生错误(.aspx代码需要用表单标记括起来)

我该怎么办

让我给出我的代码的简化版本:

<form name="Form1" method="post" id="Form1">
some content
<form name="form_inside">
<input name="fname" type="text" />
</form>
</form>
我想将元素附加到“form\u inside”并序列化表单“form\u inside”。

表单“Form1”是aspx所必需的,我无法删除它。

您能将
Form1
中的字段序列化吗

我不知道关于ASP的任何事情,但是看起来你并不是在做一个简单的“提交”,所以如果字段不在它们自己的单独表单中,这真的很重要吗

您可以将感兴趣的字段分组到
或其他内容中,例如:

<div id="my-interesting-fields">
    ...
</div>
  • 或者,在
    #我感兴趣的字段
    上创建
    元素
    成员,例如

    $("#my-interesting-fields").elements = $("#my-interesting-fields input");
    $("#my-interesting-fields").serialize();
    

  • 这两种我都没有试过,但这可能会给你一些想法。我不一定推荐它们中的任何一个:)

    因为你不能有嵌套的标签,你需要关闭标准的dotnet表单标签,如下所示:

    <script type="text/javascript">
        $(document).ready(function() {
            $("#form_inside").append($("<input type='text' name='lname'>"));
            $("#submitBtn").click(function() {function() {
                var obj = $("#form_inside *");
                var values = new Array();
                obj.each(function(i,obj1) {
                    if (obj1.name && !obj1.disabled && obj1.value) {
                        values.push(obj1);
                    }; 
                    });
                    alert(jQuery.param(values));
            }); });
        });
    
    </script>
    <form id="form1" runat="server">
    <div>
    <div id="form_inside" name="form_inside"> <input name="fname" type="text" /><input type="button" id="submitBtn" /></div>
    
    </div>
    </form>
    
    
    $(文档).ready(函数(){
    $(“#表#内”)。追加($(“”);
    $(“#submitBtn”)。单击(函数(){function(){
    var obj=$(“#表_内*”);
    var值=新数组();
    各对象(功能(i、obj1){
    if(obj1.name&!obj1.disabled&&obj1.value){
    值。推送(obj1);
    }; 
    });
    警报(jQuery.param(值));
    }); });
    });
    
    表单元素数组中的jQuery.param将提供与.serialize()相同的结果


    所以所有元素都是div$(“#form_inside*)然后过滤元素,然后在结果jQuery.param将准确地为您提供所需的内容

    如果您发布一些代码并给出一些指示,说明它的作用或生成的错误,这将非常有用。特别是,如果您可以提供一个非常简单的示例,说明问题所在的一些ASPX/HTML和jQuery代码……请注意在HTML页面中不能有嵌套元素。问题中添加了一个示例。谢谢。我知道我不应该有嵌套元素。但在我的情况下,当aspx需要在页面的最开始有一个元素时,我该怎么办?然后我想你必须使用该表单元素。然后选择其他方式来协调你感兴趣的表单rm元素,例如使用标记css类标记它们或使它们易于选择。我无法序列化“我的感兴趣的字段”中的表单元素。我尝试通过$(“#我的感兴趣的字段>输入”)序列化它。serialize()。它不起作用。嗯。似乎serialize()可能只对表单元素有效。您可以尝试将字段复制到“临时”表单中吗?第一种方法有效。我通常使用以下代码:$(“”)。append($(“#我感兴趣的字段*”))。serialize()我不太理解第二种方法。第二种方法是一种丑陋的黑客行为,它依赖于serialize()的内部实现-我会避免它。代码基本上使div看起来像一个表单(愚弄jQuery)。很高兴第一个方法适合您。由于网页的结构和代码,我无法将其从dotnet表单标签中移出。
    $("#Form1").after("<form id='tmp-form'></form>").
                append("#my-interesting-fields input");
    $("tmp-form").serialize();
    
    $("#my-interesting-fields").elements = $("#my-interesting-fields input");
    $("#my-interesting-fields").serialize();
    
    <script type="text/javascript">
        $(document).ready(function() {
            $("#form_inside").append($("<input type='text' name='lname'>"));
            $("#submitBtn").click(function() {function() {
                var obj = $("#form_inside *");
                var values = new Array();
                obj.each(function(i,obj1) {
                    if (obj1.name && !obj1.disabled && obj1.value) {
                        values.push(obj1);
                    }; 
                    });
                    alert(jQuery.param(values));
            }); });
        });
    
    </script>
    <form id="form1" runat="server">
    <div>
    <div id="form_inside" name="form_inside"> <input name="fname" type="text" /><input type="button" id="submitBtn" /></div>
    
    </div>
    </form>