javascript - 使用 ajax 表单的简单 jQuery 就地编辑

标签 javascript ajax jquery

在一个非常非常简单的内联编辑中,jQuery 将文本更改为可编辑形式

$(document).ready(function() {
 $(".editable").bind("dblclick", function () {
  OriginalText = $(this).html();
  $(this).html("<form id='test' method='post' action='test.php'>
  <input type='text' class='editBox' value='" + OriginalText + "' />
  <input type='submit' value='change' /> </form>")
 }); 
});

现在这个表单适用于更改文本,但我想让它与ajax一起使用;代码如下

$(function(){
    $('#test').submit(function(e){
        e.preventDefault();
        var form = $(this);
        var post_url = form.attr('action');
        var post_data = form.serialize();
        $.ajax({
            type: 'POST',
            url: post_url, 
            data: post_data,
            success: function(msg) {
                $(form).fadeOut(500, function(){
                    form.html(msg).fadeIn();
                });
            }
        });
    });
});

但是当将它们用作单独的函数时,它们不起作用,可能是因为表单本身是由 jQuery 生成的,而不是原始 html 的一部分。如何混合这两个函数来生成基于 ajax 的表单?

最佳答案

您需要委托(delegate)单击,因为表单和提交元素是在页面加载后动态添加的。 Look at this doc

所以你的 JS 看起来像这样。

$(document).ready(function() {
 $(".editable").bind("dblclick", function () {
  OriginalText = $(this).html();
  $(this).html("<form id='test' method='post' action='test.php'>
  <input type='text' class='editBox' value='" + OriginalText + "' />
  <input type='submit' value='change' /> </form>")
 }); 
});

$('body').delegate('#test','submit',function(e){
e.preventDefault();
        var form = $(this);
        var post_url = form.attr('action');
        var post_data = form.serialize();
        $.ajax({
            type: 'POST',
            url: post_url, 
            data: post_data,
            success: function(msg) {
                $(form).fadeOut(500, function(){
                    form.html(msg).fadeIn();
                });
            }
        });
});

关于javascript - 使用 ajax 表单的简单 jQuery 就地编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8291755/

相关文章:

javascript - setState 未被调用

php - 如何在提交到 3rd 方服务器之前保存数据?

javascript - 如何避免 Jquery 在巨大的 ajax 页面上解析/清理?

javascript - 删除 HTML 元素的内联 css

javascript - 用于从每个选项卡的特定位置复制数据的 Chrome 扩展程序

javascript - jquery html中缺少空格的字符索引

javascript - 使用回调组织 Javascript

javascript - 在第一次和第二次点击时更改 URL

python - 使用 Scrapy 抓取与 Ajax 隐藏的尺寸相关的数据

javascript - 获取此 anchor 标题文本 jQuery