首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Ajax基于值创建表单,但不会提交

Ajax基于值创建表单,但不会提交
EN

Stack Overflow用户
提问于 2013-04-07 00:28:47
回答 2查看 394关注 0票数 0

好的,这里是这样的场景:应用程序是用Ajax构建的,请求我们需要多少服务?(我不会为此验证任何内容,但我应该这样做)

假设我们给出5个作为输入,表单返回5个框和一个提交按钮

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
    function test(){
        var num = $('#numServ').val();
        var form = "";

        form += "<form name='form2' id='services' method='POST' action='<?php echo $_SERVER['PHP_SELF'];?>'>";
        for(m=0;m<num;m++){
            // alert("<br>Voice le param"+m);
            form += "<br><input type='text' name='services"+m+"' value=''>";
        }
        form += "<input type='submit' name='services' id='btnServices' value='SERVICES'>";

        form += "</form>";
        alert(form);
        $('#generated').append(form)
    }
</script>

这部分工作..。但是,当我尝试使用Ajax提交表单时,这个Ajax调用的函数被放在document.ready函数中,它不能工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('#form2').submit(function(){
    alert("Form Submitted");

    /*
    THE WHOLE CODE COMMENTED OUT IT STILL WON'T WORK
    var result = $(this).serialize();

    alert(result);
    $.ajax({
        url:"./content.php",
        data: result, 
        type: "POST",
        // cache:false,
        dataType:"html",
        success: function(data,jqXHR){$('body').append(data);},
        error: function(){alert('Check Ajax request');},
        complete:function(){alert("Ajax complete");}
    });
    */

    return false;
});

我已经做了好几天了。任何其他不是使用jquery构建的表单都可以使用此方法工作,因为表单已经加载到页面上,而不是由ajax动态生成的。

我认为我的问题在于Ajax在页面加载后制作表单...尽管我对sumit进行了Ajax调用,但表单位于document.ready函数的头部。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-07 00:43:23

jQuery正在侦听ID为form2的元素上的提交事件,但您的表单名为services

而且,看起来您是在动态构建表单,因此提交事件可能不会触发,因为jQuery在表单存在之前就加载了。

如果是这种情况,请尝试使用$(#[ID of parent element that exists on page load]).on('submit', function() {...});

更新

jQuery .on() documentation有很多有用的信息。简而言之,事件在DOM中“冒泡”。通过将侦听器添加到页面加载上存在的元素中,它可以捕获发生在其子元素上的事件。

看起来您是在将表单附加到一个ID为“generated”的元素上...如果页面加载时存在此元素,则应执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('#generated').on('submit', function() {
    alert("Form Submitted");

    var result = $(this).serialize();

    alert(result);

    $.ajax({
        url:"./content.php",
        data: result, 
        type: "POST",
        // cache:false,
        dataType:"html",
        success: function(data,jqXHR){$('body').append(data);},
        error: function(){alert('Check Ajax request');},
        complete:function(){alert("Ajax complete");}*/
    });

    return false;
});
票数 1
EN

Stack Overflow用户

发布于 2013-04-07 00:39:32

您的jQuery正在寻找具有id='form2'的表单,但是您的表单创建函数设置了id='services',因此jQuery没有运行,因为它没有匹配任何内容。

更改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('#form2').submit(function(){

至:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('#services').submit(function(){
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15857530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文