我正在尝试修改 Joomla 组件以实现一些 ajax 功能,从而为我的网站用户简化一些操作。我更改了以下信息以使项目保持匿名,因为我很偏执:-)
我想实现的目标很简单:
-> 用户登陆 xyz 组件中的“订单”页面
-> 如果订单页面上没有该用户的送货地址,请提供一个链接以创建一个
-> 当用户单击“添加地址”时,会出现一个模式窗口并向“添加地址”页面发出 ajax 请求,该页面具有添加地址的表单
-> Modal 不显示整个页面,而是只显示表单和基本(必需)表单字段
-> 用户输入地址信息并点击按钮提交表单。
-> 字段经过验证然后发布
-> 模式关闭
-> 原始“订单”页面上具有送货地址的字段已刷新,现在包含新地址。这不应刷新整个页面,因为用户可能已将数据放入其他表单元素中。这个很重要。
好的,现在你知道我想要实现什么,让我向你介绍一下我目前拥有的。
-> 用户登陆 xyz 组件中的“订单”页面
-> 如果订单页面上没有该用户的送货地址,请提供一个链接以创建一个
我写了一个简单的 php if 语句,它创建了一个带有文本“添加地址”和 id 为“addNewAddress”的锚链接
-> 当用户单击“添加地址”时,会出现一个模式窗口并向“添加地址”页面发出 ajax 请求,该页面具有添加地址的表单
我正在使用SimpleModal
从http://simplemodal.plasm.it调用的 mootols 插件
-> Modal 不显示整个页面,而是只显示表单和基本(必需)表单字段
我扩展了模式的功能,允许我注入一些 mootools 过滤,因为我只想显示表单,没有别的。我已将此添加为一个名为的新参数getSomething
,如果需要,我可以注入。
//SIMPLEMODAL
$("addNewAddress").addEvent("click", function(){
var SM = new SimpleModal({"width":600});
SM.addButton("Action button", "btn primary", function(){
$('addressForm').submit();
this.hide();
});
SM.addButton("Cancel", "btn");
SM.show({
"model":"modal-ajax",
"title":"New address",
"param":{
"url":"index.php?option=com_address&modal=true",
"getSomething":"#addressForm",
"onRequestComplete": function(){}
}
});
});
这是它调用的函数:
else if (param.getSomething.match(elid))
{
// Request HTML
this.request = new Request.HTML({
evalScripts:false,
url: param.url,
method: 'get',
onRequest: function(){},
onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
var f = responseElements.filter(param.getSomething);
$('simple-modal').removeClass("loading");
$('simple-modal').getElement(".contents").adopt(f);
param.onRequestComplete();
// Execute script page loaded
eval(responseJavaScript)
// Resize
this._display();
// Add Esc Behaviour
this._addEscBehaviour();
}.bind(this),
onFailure: function(){
$('simple-modal').removeClass("loading");
$('simple-modal').getElement(".contents").set("html", "loading failed")
}
}).send();
}
*现在,到目前为止,我已经设法开始工作,但我无法弄清楚下一部分。*
-> 用户输入地址信息并点击按钮提交表单。
在 ajax 请求 url 的末尾,您可能会注意到我发送了 modal=true 请求,这是为了我可以隐藏表单上某些我不需要在模式窗口中显示的元素 - 表单自己的从模式调用时,提交按钮是隐藏的。
-> 字段经过验证然后发布
如果我在没有模式的情况下调用“addaddress”页面,则表单有自己的验证。但是,使用模式时,当我单击提交时,不会发生验证,并且地址会在没有任何验证的情况下添加。我需要使用模态本身内部的独立验证对字段进行一些验证。
-> 模式关闭
目前,当表单发布时,我被重定向到“ viewaddresses
”页面,但我相信我可以自己解决这个问题。相反,我只想关闭模式。
-> 原始“订单”页面上具有送货地址的字段已刷新,现在包含新地址。这不应刷新整个页面,因为用户可能已将数据放入其他表单元素中。这个很重要。
这是不言自明的,但我不知道从哪里开始。
我想我已经尽可能清楚了,但是如果您需要其他任何内容,请告诉我。
我非常感谢您能提供的任何帮助。