2009-08-13 3 views
1

, если у меня есть форма со следующими двумя элементами., как проверить, было ли выбрано определенное значение в поле выбора

<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"/> 

В поле выбора пользователи могут выбрать несколько предметов. После отправки, как я могу проверить, выбрал ли пользователь одну из опций с '*' в конце, и если они затем автоматически установили флажок?

Есть ли способ сделать это в jQuery?

+2

так не давая мне возможность отправлять ответы по какой-то причине ... вот JQuery путь: 'вар hasStar = ($ ('#reasons option: selected: contains (*)'). length> 0); ' –

ответ

0

В равнине Javascript вы могли бы сделать что-то вроде этого:

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 из «причин» выбрать? (В отличие от представить)

2

Вы можете сделать это с помощью JQuery, выполнив следующие действия:

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

В основном вы выбираете на все выбранные <option> теги, содержащиеся вашим <select id="reasons">, текст которого содержит *.

+0

@Eric - мне нравится ответ nickf, но * if * вы используете jQuery в любом случае, почему бы вам не попробовать этот однострочный ? – karim79

0

Я хотел бы предложить, что вы связываете это как ваш <select> и ваш <form>:

$(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); 
}); 
Смежные вопросы