【问题标题】:jQuery .submit() not working with javascript-generated html formjQuery .submit() 不适用于 javascript 生成的 html 表单
【发布时间】:2013-12-18 17:30:07
【问题描述】:

我有一段时间想弄清楚为什么 jQuery .submit() 无法识别提交。

HTML 表单(实际上是多个表单)成功生成为一个 div,该 div 使用以下 javascript 函数附加到页面(这是从 $(document).ready(function(){} 调用的):

function makeMenu(chambers,bins,values) {
    var htmlString = "";
    for(var i = 0; i < chambers.length; i++) {
        if(bins[i]) {
            var link = chambers[i] + " - " + bins[i];
            var p = values[i];
        }

        htmlString += "<form name='entity' id='entity' method='post' action=''>";
        htmlString += "<input type='submit' name='get_entity' id='to_php' value='" + link + "' class='text_button' title='value=" + p + "'>";
        htmlString += "<input type='hidden' name='tool' value='" + chambers[i] + "'/>";
        htmlString += "<input type = 'hidden' name='bin' value='" + bins[i] + "'/>";
        htmlString += "</form>";
    }

    $("#spacer").append("<div class='menu'>" + htmlString + "</div>");
}

提交表单后,我只是想获得一个提醒以显示提交已被识别但它没有到达那里:

$(document).ready(function() {
    $('#entity').submit(function() {
        alert('Success!');
    });
 })

我尝试确保提交按钮没有提交作为名称和 ID,并尝试只生成一个表单但没有运气。非常感谢任何帮助。

【问题讨论】:

  • $('#entity').submit()执行时,你认为$('#entity')存在吗?
  • 另外,元素ids 必须是唯一的。改用一个类。
  • 我遇到了另一个问题。 makeMenu 正在创建多种形式的 class=entity。单击其中一个时,我想使用序列化将腔室和箱信息传递给 php。不幸的是,序列化的字符串包含所有室/箱组合的信息。我需要它只包含点击链接的信息。有没有办法做到这一点?

标签: javascript jquery html forms


【解决方案1】:

试试

$(document).ready(function() {
    $(document).on('submit','#entity',function() {
        alert('Success!');
    });
 })

【讨论】:

  • 回应亚历山大,因为他有第一个解决方案。现在效果很好。我只学了几个月的 javascript/jquery,每天都在学习新东西。此外,根据 Jason,我确实将其更改为 class 而不是 id,但它可以双向工作。感谢您的快速回复!
  • 我遇到了另一个问题。 makeMenu 正在创建多种形式的 class=entity。单击其中一个时,我想使用序列化将腔室和箱信息传递给 php。不幸的是,序列化的字符串包含所有室/箱组合的信息。我需要它只包含点击链接的信息。有没有办法做到这一点?
  • 你正在使用 jquery .serialize() 吗?
  • 是的。我的 ajax 在下面
  • $.ajax({ type:'POST', data: $('.entity').serialize(), url: 'get_prob.php', dataType: 'json', 成功: 函数(数据) { alert('Success'); } });
【解决方案2】:

尝试on 而不是提交。由于表单是由 jQuery 创建的,它还没有绑定到文档。

$(document).ready(function() {
    $(document).on('submit','#entity',function() {
        alert("success");
    });
 })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    相关资源
    最近更新 更多