Jquery / PhP / Joomla 选择两个组合框之一不会更新


Jquery / PhP / Joomla Select one of two comboboxes does not get updated

我正在制作一个 Joomla 组件,它在页面上有 3 个comboboxes/selects。一个是语言,两个是主题。如果您更改语言,则其他两个语言将填充相同的数据(所选语言的主题),则selectbox的名称不同,但在其他方面相同。

我收到其中一个主题框的错误(因此网址变红),但没有逻辑会给出错误。在Firebug中,我为没有另一个的那个取回了HTML,这个得到了更新,但另一个什么也没回。

如果我右键单击给出错误的火虫,然后"再次发送",它将加载正常。他们是时间问题吗?

语言选择框的更改事件:

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 文件中,有一个与数据库的连接,以 ge 信息来构建选择框。我为此使用了一个可以的函数,因为它使所有选项框都成为我的选择框。选择框唯一有问题的地方是在有 2 个选择的页面上,当第三个选择更改时需要更改。我猜这是在 Jquery 中的某个地方出错的地方。我认为这与时机有关。但我对所有的提议都持开放态度。

谢谢。

更新:

否,"ID"和"名称"字段不同。它们被命名为:cmbldcoi_childcmbldcoi_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');

        }
    });  

}

该函数调用 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 子句。

如果只有一个组合框需要更新,则一切正常。当有两个时,它会给出一个问题。

感谢您的帮助!

我想你的两个选择框具有相同的 id #ldlinksubjects,因此它们可能会随机失败,或者两者都不起作用。你能更有表现力,或者给出完整的JS代码吗?