gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 20:13:32 26 4
gpt4 key购买 nike

在一个非常非常简单的就地内联编辑中,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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com