我正在构建一个自定义按钮,到目前为止我有这个:
{!REQUIRESCRIPT("/soap/ajax/8.0/connection.js")}
var lead = new sforce.SObject("Lead");
lead.id = "{!Lead.Id}";
lead.OwnerId = "ID";
lead.Status = "STATUS";
var result = sforce.connection.update([lead]);
if (result[0].getBoolean("success"))
{
// Refresh window
window.location.reload();
}
else
{
alert("Error saving lead");
}
这一切都很完美并且可以进行我想要的更改,但是我也想要发生的是当点击按钮时,在保存任何内容之前,我想要:
lead.Reason__c
要弹出的文本字段,就像双击它一样,以便用户可以填写点击按钮的原因
我尝试过像:
这样的代码lead.Reason__c.open
lead.Reason__c.edit
但是没有运气,我只是在黑暗中刺伤它。
我希望有人可以提供帮助, 谢谢大家
答案 0 :(得分:1)
由于你只有一个字段,你不需要表格,我建议你使用javascript的提示框,如果它返回的是null以外的东西(null - >用户点击取消)做你的魔法
{!REQUIRESCRIPT("/soap/ajax/8.0/connection.js")}
var reason = prompt("Enter reason", "");
if (reason != null) {
var lead = new sforce.SObject("Lead");
lead.id = "{!Lead.Id}";
lead.OwnerId = "ID";
lead.Status = "STATUS";
lead.Reason__c = reason;
...
}
PS:我还建议使用“更新”的ajax工具包而不是8.0 :)我们现在是24.0。我怀疑他们会淘汰旧的,但你永远不知道。
答案 1 :(得分:1)
真正模拟双击的正确方法是将双击事件分派给元素; this page对如何做到这一点有很好的参考。我可以确认您可以创建一个自定义按钮,该按钮可以双击一个SFDC编辑字段,就好像用户自己双击该字段一样。快速而肮脏的例子:
var evObj = document.createEvent('MouseEvents');
evObj.initMouseEvent( 'dblclick', true, true, window, 1, 12, 345, 7, 220, false, false, true, false, 0, null );
document.getElementById('lea13_ilecell').dispatchEvent(evObj);
然而,对你来说这不是一个合理的方法,因为一旦你双击一个字段,你知道,“保存”和“取消”按钮会呈现给用户而无法覆盖他们的行为。你需要的方式。你可以用一些jQuery魔法破解这个,但我推荐mmix的方法,它更加健全。如果您的需求扩展到单个文本字段之外的某些内容,您可能需要合并一些花哨的动态HTML / CSS对话框或VisualForce,但根据您的需要,提示方法是最简单的答案。