0

私は現在、取り組んでいる空港プロジェクトのために多くの言語を持っています。

-現在、ドロップダウン メニューから希望する言語を選択すると、リストに表示されます。正常に動作しています。それらも削除できます。

-目標: 言語がリストに追加されると、再度追加できないようにする必要があります。たとえば、フランス語の [言語を追加] をクリックして、何度でも追加できます。これはどの言語にも当てはまります。

言語を追加するための現在の js コード:

function addLanguage()
{
        var languages = $("#languages_dd").val();
        language_display = languages.split("-");
        alert(languages);

        var units = $("#units_dd").val();
        var unit_display = $("#units_dd :selected").text();

        $(".none_class").hide();
        $("#error_msg").html("");
        $("#summary").append("<li><input type='radio' name='language_item'> <span class='route_summary_field_big'>"+language_display[0]+"</span>"+unit_display+"<input type='hidden' name='languages[]' value='"+languages+"'><input type='hidden' name='units[]' value='"+units+"'></li>");
}

私はJavaScriptにあまり慣れていないので、オンラインで検索しています。次のような条件付きになることはわかっています。

if($("#languages_dd :selected")
{
//do something;
}
else if
//do something else;
}

私を正しい方向に導くために、どんな意見も歓迎します。

4

2 に答える 2

0

選択した言語を配列に保持できます。次に、html に追加する前に、値が既に存在するかどうかを確認します。

var selected_lang = new Array();
function addLanguage() {
//your code here..
    if (!$.inArray(language_display, selected_lang)) {
        selected_lang.push(language_display)
        // rest of your code to append html
    }
}
于 2013-08-22T19:24:27.760 に答える
0

これが私が思いついた解決策です(建設的な批判を自由に提供してください):

function addLanguage()
{
        var languages = $("#languages_dd").val();
        language_display = languages.split("-");
        var units = $("#units_dd").val();
        var unit_display = $("#units_dd :selected").text();
        $(".none_class").hide();
        var shouldAdd = "YES";
        $("#summary li").each(function(){
            var matches = 0;
            $(this).find('input:hidden').each(function(){
                var stringVal= $(this).val();
                console.log(stringVal);
                if(stringVal.indexOf(languages) != -1){
                    matches++;
                }
                if(stringVal.indexOf(units) != -1){
                    matches++;
                }
            });
            if(matches == 2){
                shouldAdd = "NO";
            }
        });
        if(shouldAdd == "YES") {
            $("#summary").append("<li><input type='radio' name='language_item'> <span class='route_summary_field_big'>"+language_display[0]+"</span>"+unit_display+"<input type='hidden' name='languages[]' value='"+languages+"'><input type='hidden' name='units[]' value='"+units+"'></li>");
        }
        $("#error_msg").html("");
}
于 2013-08-26T15:42:23.730 に答える