У меня есть CheckBoxList
, и мое требование - разрешить пользователю выбирать максимум три варианта (через Javascript), и как только он нажимает на четвертый, первый выбранный CheckBox
не снят, аналогично, когда он выбирает пятый (другой), CheckBox
, который был выбран вторым, не снят и так далее. В конечном итоге пользователь остается только с тремя выбранными параметрами.Снимите флажок с первой проверки CheckBox, когда количество превышает Maxlimit
Например. В данном изображении, если пользователь выбирает .Net (первый), Java (второй), PHP (третий), и когда он выбирает SQL (четвертый), .Net не контролируется и SQL проверяется. Далее, когда он выбирает Cloud Computing (пятый), Java не контролируется.
Я написал следующий Javascript, который работает отлично для первого сценария и непредставленных проверок первого выбранного элемента, когда выбран четвёртые один, но он не работает, потому что дальше counter
значение снова достигает до 4, и cbArray[counter - 4]
снова пытается снять первый флажок вместо второго. Как решить эту проблему. Благодарю.
Мой Javascript:
<script type="text/javascript" language="javascript">
function limitChecked(maxCount) {
debugger;
var ocbList = document.getElementById('cbList');
var cbArray = ocbList.getElementsByTagName('input');
var counter = 0;
for (var i = 0; i < cbArray.length; i++) {
if (cbArray[i].checked==true) {
counter++;
if (counter > maxCount) {
cbArray[counter - 4].checked = false;
}
}
}
}
</script>
.aspx Код:
<body>
<form id="form1" runat="server">
<div>
Courses:
<asp:CheckBoxList ID="cbList" runat="server" onclick="limitChecked(3)">
<asp:ListItem>.Net</asp:ListItem>
<asp:ListItem>Java</asp:ListItem>
<asp:ListItem>PHP</asp:ListItem>
<asp:ListItem>SQL</asp:ListItem>
<asp:ListItem>Cloud Computing</asp:ListItem>
</asp:CheckBoxList>
</div>
</form>
</body>
Добавить отдельные элементы в массив, как они проверены, после того, как счетчик превысит 4, удалите первый элемент в массиве (используя метод среза). Я слишком ленив, чтобы написать это прямо сейчас, но вы поняли эту идею. – Trendy
@Trendy Спасибо за ввод. Я собираюсь попробовать. – RahulD
Нет проблем, извините, если это было расплывчато, но @McGarnagle также предоставил достаточный ответ. – Trendy