Jquery / PhP / Joomla Select one of two comboboxes does not get updated
- by bluesbrother
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 !