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

Posted by bluesbrother on Stack Overflow See other posts from Stack Overflow or by bluesbrother
Published on 2012-07-03T12:27:53Z Indexed on 2012/07/06 3:16 UTC
Read the original article Hit count: 172

Filed under:
|
|
|
|

I am making a Joomla component wich has 3 comboboxes/selects on the page. One with languages and 2 with subjects. If you change the language the other two get filled with the same data (the subjects in the selected language) the name of the selectbox are different but otherwise the same.

I get an error for one of the subject boxes (hence the url gets red), but there is no logic in wich one will give an error. In Firebug i get the HTML back for the one without the other and this one gets updated but the other one gives nothing back.

If i right click in firebug on the one that gave the error, and do "send again" it will load fine. Is their a timing problem?

The change event of the language selectbox:

jQuery('#cmbldcoi_ldlink_language').bind('change', function() {

    var cmbLangID = jQuery('#cmbldcoi_ldlink_language').val();

    if (cmbLangID  !=0) {

        getSubjectCmb_lang(cmbLangID, 'cmbldcoi_ldlink_subjects', '#ldlinksubjects');  
    }
});

Function that requests the php file to create the html for the select:

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(){

     });
}

And in the php file there is a connection made to the database to ge the information to build the selectbox. I use a function for this that is okay because it makes al my selectboxes. The only place where there are problems with select boxes is on the pages that has 2 selects that need to change when a third one changed. My guess it is somewhere in the Jquery where this goes wrong. And i think it has to do with timing. But i am open for all sugestions.

Thanx.

UPDATE:

No the ID and Name fields are different. They are named : cmbldcoi_child cmbldcoi_parent

Here is my code:

The change event for the first combobox which makes the other two change:

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');


        }
    });  

}

The function wicht calls the php file to get the info from the database:

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(){

 });

 }    

The PHP code function 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" );


    }

There is a class wich is called ld_html wich has an funnction in it that creates a combobox. ld_html::ld_create_cmb_html() It gets an table name, id field, namefield and optional an where clause.

It all works fine if there is just one combobox thats needs updating. It give a problem when there are two.

Thanks for the help !

© Stack Overflow or respective owner

Related posts about php

Related posts about jQuery