2012-07-11 120 views
1

我有一个代码,允许通过点击一个按钮时隐藏/显示的输入来编辑一个字段。它工作正常,但它只在本地更改页面上的数据(没有更新到我的数据库,这意味着当用户编辑他们的配置文件时,它保存在数据库中)。我知道如何使用jquery提交没有刷新的表单,但我不知道如何将两者结合起来,以便有人可以编辑一个字段(就地),然后当他们单击完成时,它将不刷新(如Facebook)提交它。如何获得隐藏/取消隐藏按钮以发送发布请求?

问题是使用'编辑'按钮下面的代码(这只是一个锚点)变成'保存'按钮,然后回到'编辑'。我想为我提交该字段,我需要该按钮是一个提交按钮?

下面是我用做就地编辑代码:

$('#editvalue').click(function(e){$('#storedvalue').hide();$('#altervalue').show();}); 
$('#savevalue').click(function(e){ 
    var showNew = $('#changevalue').val(); 
    $('#altervalue').hide(); 
    $('#storedvalue').show(); 
    $('#storedvalue span').text(showNew); 
}); 

,我学会了如何从这里tutorial提交表单,而不刷新。我不确定如何将它们结合起来以达到我想要的效果,但我不确定这是否是解决问题的正确方法。有没有办法采取showNew变量,并提交它作为一个职位没有用户点击提交按钮(可能触发当用户点击保存)?

我是jquery和web编程的超级新手,所以很抱歉如果我没有解释这个权利。如果它帮助这里是与上面的JS代码工作的HTML: PHP jQuery的例子:

<div id="wrapper"> 
    <div id="container"> 
     <div id="storedvalue"><span>Hello</span> [<a href="javascript:void(0);" id="editvalue">edit</a>]</div> 
     <div id="altervalue" style="display:none;"><input type="text" name="changevalue" id="changevalue" value="Hello"> [<a href="javascript:void(0);" id="savevalue">save</a>]</div> 
    </div> 
</div> 
+0

我很难理解你的问题。如果我假定在按下按钮(即就地编辑)时切换到输入字段的普通文本,然后通过AJAX(无页面刷新)将新值发布到服务器,然后更新就地文本? – 2012-07-11 17:04:02

+0

@RasmusFranke是的,这就是我想要做的。我希望用户能够通过点击每个字段旁边的编辑按钮来更新他们的个人资料字段。一旦他们点击编辑按钮,就会出现一个文本输入和保存按钮,允许他们修改该字段,当他们点击保存时,它会更新页面并发送一个发布请求,以便我可以更新数据库。 – Lostsoul 2012-07-11 17:18:49

回答

1

如果我理解正确的话,根本就截至http://api.jquery.com/jQuery.post/您$里(“#savevalue”)中描述的AJAX后.click(函数(e){...})函数。这样的事情:

$('#editvalue').click(function(e){$('#storedvalue').hide();$('#altervalue').show();}); 
$('#savevalue').click(function(e){ 
    var showNew = $('#changevalue').val(); 
    $('#altervalue').hide(); 
    $.post("test.php", { val: showNew }); 
    $('#storedvalue').show(); 
    $('#storedvalue span').text(showNew); 
}); 

这将张贴单个字段到test.php页面。您可以(也应该)添加成功/失败回调以查看是否一切按预期进行。

当然,这个值将不得不在PHP端处理。

编辑:例如用更通用的代码,包括HTML生成时http://jsfiddle.net/X8Rsg/4/

+0

哇谢谢。我会玩这个,看看它是如何发展。它看起来像我想要的虽然(但比我想要做的更简单)。 – Lostsoul 2012-07-11 17:20:12

+0

此外,您可以使用自动处理显示/隐藏部分并自动提交给服务器的JQuery插件,而不是手动编码。例如,查看http://code.google.com/p/jquery-in-place-editor/。单线可以基本解决整个javascript部分。 – 2012-07-11 17:22:55

+0

谢谢,我在另一个图书馆看到类似的东西,但我想学习如何自己做,然后我会探索其他图书馆。你的解决方案工作完美,我不能相信我可以发布这么容易(我想我需要一个提交按钮)。我有另一个问题,说我的网页有20个项目要编辑,我需要为每个部分做出上述代码,或者有没有办法确定他们填写的表单?现在,我发布val:“Rasmus”,但是我可以在该领域获得信息,因此它会发送first_name:“Rasmus”和last_name:“Franke”,但不会创建20个副本?或者它会导致验证问题? – Lostsoul 2012-07-11 18:34:07