Дан массив в форме, при выборе одной записи - автоматически выбирается запись следующая за ней.
Требуется написать данную функцию на javascript.
<?
<form id='my_form'>
<input type='checkbox' name='trade[]' value="name1" onclick="add_records(this)">
<input type='checkbox' name='trade[]' value="name2" onclick="add_records(this)">
<input type='checkbox' name='trade[]' value="name3" onclick="add_records(this)">
<input type='checkbox' name='trade[]' value="name4" onclick="add_records(this)">
<input type='checkbox' name='trade[]' value="name5" onclick="add_records(this)">
<input type='checkbox' name='trade[]' value="name6" onclick="add_records(this)">
<input type='submit'>
</form>
?>
Решение (не идеальное, но для тестового задания подойдет):
<?
<script>
function add_records(obj) {
var node = obj.parentNode; // Определяем родителя
var flag = false; // Метка, по умолчанию false
var items = node.getElementsByTagName("input"), len, i; // выбираем все инпуты в форме
// Здесь, увы цикл по элементам формы:
for (i = 0, len = items.length; i < len; i += 1) {
// Если текущий элемент является чекбоксом...
if (items.item(i).type && items.item(i).type === "checkbox") {
// Дальше логика простая: если checkbox выбран, то ставим метку и следующий за ним чекбокс делаем также выбранным
if (items.item(i).checked == true) {
flag = true; // Ставим метку
} else {
// Если метка TRUE
if(flag) {
// Делаем checkbox активным, снимаем метку
items.item(i).checked = true;
flag = false;
break;
} else {
items.item(i).checked = false;
}
}
}
}
}
</script>
?>
|