我正在制作一个comboboxes/selects
页面上有 3 个的 Joomla 组件。1 种语言,2 种主题。如果您更改语言,其他两个将填充相同的数据(所选语言的主题),名称selectbox
不同但其他方面相同。
我收到一个主题框的错误(因此 url 变红),但是没有任何逻辑会给出错误。在 Firebug 中,我得到了一个没有另一个的 HTML,这个得到了更新,但另一个没有任何回报。
如果我右键单击给出错误的萤火虫,然后“再次发送”,它将正常加载。他们是时间问题吗?
语言选择框的change事件:
jQuery('#cmbldcoi_ldlink_language').bind('change', function() {
var cmbLangID = jQuery('#cmbldcoi_ldlink_language').val();
if (cmbLangID !=0) {
getSubjectCmb_lang(cmbLangID, 'cmbldcoi_ldlink_subjects', '#ldlinksubjects');
}
});
请求 php 文件为选择创建 html 的函数:
function getSubjectCmb_lang(langID, cmbName, DivWhereIn) {
var xdate = new Date().getTime();
var url = 'index.php?option=com_ldadmin&view=ldadmin&format=raw&task=getcmbsubj_lang&langid=' + langID + '&cmbname=' + cmbName + '&'+ xdate;
jQuery(DivWhereIn).load(url, function(){
});
}
并且在 php 文件中有一个与数据库的连接,以获取构建选择框的信息。我为此使用了一个可以的函数,因为它使所有我的选择框。选择框存在问题的唯一地方是在有 2 个选择需要在第三个更改时更改的页面上。我猜这是在 Jquery 中的某个地方出错了。我认为这与时间有关。但我愿意接受所有建议。
谢谢。
更新:
不,ID 和名称字段不同。它们被命名为:cmbldcoi_child cmbldcoi_parent
这是我的代码:
第一个组合框的更改事件使其他两个更改:
jQuery('#cmbldcoi_language_chain_subj').bind('change', function(){
var langID = jQuery('#cmbldcoi_language_chain_subj').val();
if (langID != 0){
getSubjectCmb_lang(langID, 'cmbldcoi_child', '#div_cmbldcoi_child');
getSubjectCmb_lang(langID, 'cmbldcoi_parent', '#div_cmbldcoi_parent');
}
});
}
函数 wicht 调用 php 文件从数据库中获取信息:
function getSubjectCmb_lang(langID, cmbName, DivWhereIn){
var xdate = new Date().getTime();
var url = 'index.php?option=com_ldadmin&view=ldadmin&format=raw&task=getcmbsubj_lang&langid=' +
langID + '&cmbname=' + cmbName + '&'+ xdate;
jQuery(DivWhereIn).load(url, function(){
});
}
PHP代码函数getcmbsubj_lang(){
$langid = JRequest::getVar('langid');
if ($langid > 0 ){
$langid = JRequest::getVar('langid');
}else{
$langid = 1;
}
$cmbName = JRequest::getVar('cmbname');
//$lang_sufx = self::get_#__sufx($langid);
print ld_html::ld_create_cmb_html($cmbName, '#__ldcoi_subjects','id', 'subject_name', " WHERE id_language={$langid} ORDER BY subject_name" );
}
有一个名为 ld_html 的类,其中有一个创建组合框的功能。ld_html::ld_create_cmb_html() 它获取表名、id 字段、名称字段和可选的 where 子句。
如果只有一个组合框需要更新,这一切都很好。当有两个时它会出现问题。
谢谢您的帮助 !