ページに3つあるJoomlaコンポーネントを作成comboboxes/selects
しています。1 つは言語、2 つは科目です。言語を変更すると、他の 2 つには同じデータ (選択した言語の科目) が入力され、名前selectbox
は異なりますが、それ以外は同じです。
サブジェクトボックスの1つでエラーが発生します(したがって、URLが赤くなります)が、エラーが発生するロジックはありません。Firebug では、もう一方の HTML が返されず、これは更新されますが、もう一方は何も返されません。
エラーが発生したものでfirebugを右クリックし、「再送信」を行うと、正常にロードされます。タイミングの問題ですか?
言語選択ボックスの変更イベント:
jQuery('#cmbldcoi_ldlink_language').bind('change', function() {
var cmbLangID = jQuery('#cmbldcoi_ldlink_language').val();
if (cmbLangID !=0) {
getSubjectCmb_lang(cmbLangID, 'cmbldcoi_ldlink_subjects', '#ldlinksubjects');
}
});
選択用の html を作成するために 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 ファイルには、選択ボックスを構築するための情報を取得するためのデータベースへの接続があります。これには、すべての選択ボックスを作成するため、問題のない関数を使用します。選択ボックスに問題がある唯一の場所は、3 つ目の選択が変更されたときに変更する必要がある 2 つの選択があるページです。私の推測では、これがうまくいかないのは Jquery のどこかです。そして、それはタイミングと関係があると思います。しかし、私はすべての提案に対してオープンです。
ありがとう。
アップデート:
いいえ、ID フィールドと名前フィールドは異なります。名前は次のとおりです: cmbldcoi_child cmbldcoi_parent
これが私のコードです:
他の 2 つの変更を行う最初のコンボボックスの変更イベント:
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 フィールド、namefield、およびオプションの where 句を取得します。
更新が必要なコンボボックスが 1 つしかない場合は、すべて正常に機能します。2つあると問題になります。
助けてくれてありがとう !