0

選択ボックス内のユーザーの選択に基づいて、if/else 条件で関数を実行しようとしています。選択ボックスでは複数の選択が可能で、オプションは optgroup で区切られています。

.selectedIndex、.option[] を選択し、現在は .indexOf を使用して if 条件を試しましたが、意図したロジックには何も従わないようです。私はjavascript/jQueryを学んでいるので、初心者の失敗を許してください!

私が何をすべきかについての提案はありますか?

HTML

    <select id="box1" style="width:500px" multiple>
    <optgroup label="Stage I">
    <option selected>Complete</option>
    </optgroup>
    <optgroup label="Stage II">
    <option>Micro two one</option>
    <option>Micro two two</option>
    <option>Intra one</option>
    </optgroup>
    <optgroup label="Stage III">
    <option>Macro two two</option>
    <option>Macro one one</option>
    </optgroup>
    <option>Not applicable</option>
    </select>
<input type="button" onclick="writetext()" value="write">
    <textarea id="text"></textarea>

JS

function writetext(){
var mytext = $('#text');

var box_1 = $("#box1").val();
if (box_1.indexOf('Complete') > -1){
ctext += "\n- Stage I\n- "+box_1+"\n";}
if ((box_1.indexOf('two one') > -1) || (box_1.indexOf('two two') > -1) || (box_1.indexOf('Intra') > -1)) {
ctext += "\n- Stage II\n- "+box_1.join("\n- ")+"\n";}
if ((box_1.indexOf('Macro two') > -1) || (box_1.indexOf('Macro one') > -1)) {
ctext += "\n- Stage III\n- "+box_14.join("\n- ")+"\n";}

else {ctext += "\n- "+box_1+"\n";}
mytext.value = ctext;        
}

更新 この例では以下の答えが機能しますが、if ステートメント内で、複数の選択から派生した配列を調べる簡単な方法があるはずです。2 つ以上のアイテムが選択されている場合、複数の選択肢の中から特定のオプションが選択されているかどうかを確認する方法はありませんか?

更新#2ヒントをありがとう@andrew。探していたものにたどり着いたと思います。選択した答えほどエレガントではありませんが、次を使用して目前のタスクを実行します。

$.inArray('string to challenge', variable containing object array of selectbox) > -1

したがって、私の例では、「Intra one」が選択の中にあった場合にコードを起動したい場合は、次のようにすることができます。

$.inArray('Intra one', box_1) > -1

正規表現を使用して文字列の一部が存在するかどうかを確認できるかどうかはわかりませんが、これを行う方法があると確信しています。

4

1 に答える 1