2009-08-13 10 views
1

次の2つの要素を持つフォームがある場合。選択ボックスで特定の値が選択されているかどうかをチェックする方法

<select name="" size="5" id="reasons" multiple="multiple"> 
    <option value="1">test1*</option> 
    <option value="2">test2*</option> 
    <option value="3">test3*</option> 
    <option value="4">test4</option> 
    <option value="5">test5</option> 
</select> 
<input type="checkbox" name="somecheckbox" id="checkboxId"/> 

ユーザは複数のものを選択できます。 提出すると、最後にオプションの1つが「*」で選択されているかどうかを確認し、自動的にチェックボックスをオンにした場合はどうすれば確認できますか?

jQueryでこれを行う方法はありますか?あなたはこのような何かしたいJavaScriptの平野で

+2

ので、私はいくつかの理由のための答えを投稿せていません...ここでjQueryの方法です –

答えて

0

var sel = document.getElementById('reasons'); 

for (var i = 0, l = sel.options.length; i < l; ++i) { 
    if (sel.options[i].selected && sel.options[i].innerHTML.match(/\*/)) { 
     document.getElementById('checkboxId').checked = true; 
     break; 
    } 
} 
0

を選択するには、「上の理由」の「checkboxId」のonchangeを更新しないだろう理由はありますか?

var hasStar = ($('#reasons option:selected:contains(*)').length > 0); 

を基本的には、そのテキスト*が含まれているあなたの<select id="reasons">に含まれるすべての選択<option>タグに選択している:

2

(上の提出ではなく)あなたは次のようにしてjQueryを使ってこれを実現することができます。

+0

@Eric - nickfの答えが気に入っていますが、もし*もし*あなたがjQueryを使っているのなら、なぜこの1行を試してみませんか? ? – karim79

0

私はあなたがあなたの<select>とあなたの<form>の両方にこれを結合することを示唆している: `VARのhasStar =($:

$(document).ready(function() { 
    var selectHandler = function() { 
    if (this.options[this.selectedIndex].innerHTML.match(/\*$/)) { 
     $("#checkboxId").checked = true; 
    } 
    }; 

    $("#reasons").bind("change keypress", selectHandler); 
    $("#whatever-form").bind("submit", selectHandler); 
}); 
関連する問題