Помогите с формой(списком)
Народ помогите решить проблему!
У меня одна форма: <form name="matchform" id = "form" method="post" action=""> <label for="nh1" id = "ga1">Первая</label> <select name="menu" id="form_match1"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh2" id = "game2">Вторая</label> <select name="menu2" id="form_match2"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh3" id = "ga3">Третья</label> <select name="menu3" id="form_match3"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh4" id = "ga4">Четвертая</label> <select name="menu4" id="form_match4"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh5" id = "ga5">Пятая</label> <select name="menu5" id="form_match5"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh6" id = "ga6">Шестая</label> <select name="menu6" id="form_match6"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh7" id = "ga7">Седьмая</label> <select name="menu7" id="form_match7"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh8" id = "ga8">Восьмая</label> <select name="menu8" id="form_match8"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh9" id = "ga9">Девятая</label> <select name="menu9" id="form_match9"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh10" id = "ga10">Десятая</label> <select name="menu10" id="form_match10"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh11" id = "ga11">Одинадцатая</label> <select name="menu11" id="form_match11"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh12" id = "ga12">двенадцатая</label> <select name="menu12" id="form_match12"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <input type="submit" name="knopka" id="knopka" value="ОК"/> </form> Как сделать что бы при выборе пяти любых списков остальные семь блокировались? Прбовал эксперементировать с этим: $('#form').change(function(){ var myChoice = $('#form_match1 :selected').val(); var myChoice2 = $('#form_match2 :selected').val(); var myChoice3 = $('#form_match3 :selected').val(); if((myChoice >= 2)&&(myChoice2 >= 2)) { $('#form_match3').attr('disabled','disabled'); } else{ $('#form_match3').attr('disabled',false); if((myChoice2 >= 2)&&(myChoice3 >= 2)) { $('#form_match1').attr('disabled','disabled'); } else{ $('#form_match1').attr('disabled',false); } }; }); Но в этом случае надо задавать конкретные варианты,а таких вариантов более 50000 тысяч.Есть ли какой способ упростить этот процесс?Помогите пожалуйста! |
можно так
выбери 5 в своей форме - остальные блокируются выбери меньше 5 - все разблокируются <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>demo</title> <script type='text/javascript' src='http://code.jquery.com/jquery-git.js'></script> <script> $(function(){ $('#form').change(function(){ var allSelect = $('select', this), // все select этой формы more1 = allSelect.filter(function () { // все select у которых value больше 1 return $(this).val() > 1; }); if (more1.length > 4) { // если таких 5 либо больше allSelect.not(more1).attr('disabled', 'disabled'); } else { allSelect.removeAttr('disabled'); // иначе все select делаем доступными } }); }); </script> </head> <body> <form name="matchform" id = "form" method="post" action=""> <label for="nh1" id = "ga1">Первая</label> <select name="menu" id="form_match1"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh2" id = "game2">Вторая</label> <select name="menu2" id="form_match2"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh3" id = "ga3">Третья</label> <select name="menu3" id="form_match3"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh4" id = "ga4">Четвертая</label> <select name="menu4" id="form_match4"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh5" id = "ga5">Пятая</label> <select name="menu5" id="form_match5"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh6" id = "ga6">Шестая</label> <select name="menu6" id="form_match6"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh7" id = "ga7">Седьмая</label> <select name="menu7" id="form_match7"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh8" id = "ga8">Восьмая</label> <select name="menu8" id="form_match8"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh9" id = "ga9">Девятая</label> <select name="menu9" id="form_match9"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh10" id = "ga10">Десятая</label> <select name="menu10" id="form_match10"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh11" id = "ga11">Одинадцатая</label> <select name="menu11" id="form_match11"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <label for="nh12" id = "ga12">двенадцатая</label> <select name="menu12" id="form_match12"> <option value="1"></option> <option value="2">позиция1</option> <option value="3">позиция2</option> <option value="4">позиция3</option> </select> <input type="submit" name="knopka" id="knopka" value="ОК"/> </form> </body> </html> |
ааааааа Pavel M. спасибо огромное!!!Я уж думал эту траблу не решит никто.
|
можно и с чекбоксами
начни делать пример и, думаю, тебе помогут |
Спасибо!
|
Народ подскажите что в этой функции не так?Поидее что то подобное и должно быть:
$(document).ready(function() { var checkedboxes = $('input.onlyfive:checked'); if (checkedboxes.length == 5) { checkedboxes.attr('disabled','disabled') } else{ return false}; }); Вот сама форма: <form name="matchform2" id = "form9" method="post" action=""> <input name = "sample_1" value="1" type="checkbox" /> <input name = "sample_1" value="2" type="checkbox" /> <input name = "sample_1" value="3" type="checkbox" /> <input name = "sample_1" value="4" type="checkbox" /> <input name = "sample_1" value="5" type="checkbox" /> <input name = "sample_1" value="6" type="checkbox" /> <input name = "sample_1" value="7" type="checkbox" /> <input name = "sample_1" value="8" type="checkbox" /> <input name = "sample_1" value="9" type="checkbox" /> <input name = "sample_1" value="10" type="checkbox" /> </form> Принцип тот же,выбрали 5 чекбоксов и форма заблокирована,выбрали меньше и форма доступна. |
Вам Pavel M. написал рабочий пример, сравните его и ваш код
|
ну если допустим сделать так:
$(function(){ $('#form9').change(function(){ var input = $('input', this), more1 = input.filter(function () { return $(this).val() > 4; }); if (more1.length > 4) { input.not(more1).attr('disabled', 'disabled'); } else { input.removeAttr('disabled'); } }); }); То блокируются первые 4 чекбокса и обратно уже не разблокировать |
На онклик чекбокса повесить проверку количества выбранных - если их больше, чем допустимо - не отмечать чекбокс
|
del
|
Часовой пояс GMT +3, время: 19:06. |