如何从动态元素发布表单

Posted

技术标签:

【中文标题】如何从动态元素发布表单【英文标题】:How to post form, from a dynamic element 【发布时间】:2019-10-21 15:20:10 【问题描述】:

我有一个动态表,其中填充了一个 href 链接,每个链接都有自己的值的数据元素。 还有一个表单(不是动态生成的),它具有隐藏的输入类型,将由链接数据值设置。

我可以使用正确的数据发布带有隐藏输入值的表单,并且操作页面加载正常,但无法接收任何发布数据。 似乎动态元素可以发布表单,但没有发送数据。

   jQuery(document).ready(function()         
      jQuery(document).on("click", ".linksollicituddetall", function() 
        var intIdSollicitud = jQuery(this).data("idsol");

        if(intIdSollicitud.toString().length > 0) 
            jQuery("#idsol").val(intIdSollicitud);
            jQuery("#frmDetallSollicitud").submit();    
        
       );
   );

 <body>

<form id="frmDetallSollicitud" method="POST" action="DetallSollicitud.asp">
    <input type="hidden" name="idsol" id="idsol" value="-1">
</form>

</body>

我要实现的是点击链接时,输入类型hidden填入链接的数据,然后提交表单。在下一页(操作 URL)中接收帖子数据。

【问题讨论】:

代码对我来说似乎很好,它应该可以工作。您是否调试过代码以查看该值被设置为隐藏字段?您如何确定表单没有发布值?表单内的隐藏字段是否有问题? 我使用 fiddler 调试它,发送的表单没有发布数据。而且在目标页面中,Request.form 到达时也是无效的。隐藏字段的形式是 yes。 请发布 html。不能假设表单正确完成,也不能假设.linksollicituddetall#idsol#frmDetallSollicitud 是表单控件。许多 OP 尝试在 div 上使用 value 属性并期待奇迹。 【参考方案1】:

嗯,问题是,链接在发送表单之前启动了 href,所以问题不是阻止默认。

正确的代码是:

jQuery(document).on("click", ".linksollicituddetall", function(e) 
        e.preventDefault();
        var intIdSollicitud = jQuery(this).data("idsol");

        if(intIdSollicitud.toString().length > 0) 
            jQuery("#idsol").val(intIdSollicitud);
            jQuery("#frmDetallSollicitud").submit();    
        
    );

【讨论】:

以上是关于如何从动态元素发布表单的主要内容,如果未能解决你的问题,请参考以下文章

如何创建动态 html 表单的 JSON 对象(表单元素)?

如何使用动态数量的数据条目初始化表单集

AngularJs:如何对指令创建的动态元素应用表单验证

具有从 JSON 获取的元素组的 Angular 动态表单

如何使用jQuery动态添加表单元素

如何检测 Angular 2 反应/动态表单的一个元素发生的变化?