3

ページに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つあると問題になります。

助けてくれてありがとう !

4

1 に答える 1

0

2 つの選択ボックスの ID が同じ#ldlinksubjectsであるため、ランダムに失敗するか、両方がまったく機能しない可能性があると思います。もっと表現力を高めたり、完全な JS コードを提供したりできますか?

于 2012-07-04T22:50:53.913 に答える