ورود

View Full Version : سوال: محدودیت انتخاب چک باکس



space_
جمعه 14 اسفند 1394, 09:43 صبح
سلام
من یک فرم طراحی کردم که می خوام کسی که فرم رو پر میکنه از بین مثلا 10 تا چک باکس فقط 3 تارو انتخاب کنه :ناراحت:
ولی همینجاش گیر کردم نمی دونم چیکارش کنم . با تشکر از همه

radeon
جمعه 14 اسفند 1394, 14:45 عصر
این تابع جاوااسکریپت:
<script type="text/javascript">
function checkboxlimit(checkgroup, limit){
var checkgroup=checkgroup
var limit=limit
for (var i=0; i<checkgroup.length; i++){
checkgroup[i].onclick=function(){
var checkedcount=0
for (var i=0; i<checkgroup.length; i++)
checkedcount+=(checkgroup[i].checked)? 1 : 0
if (checkedcount>limit){
alert("You can only select a maximum of "+limit+" checkboxes")
this.checked=false
}
}
}
}
</script>

برای مثال فقط سه بار به کاربر اجازه تیک زدن چک باکس میدیم:
<script type="text/javascript">
checkboxlimit(document.forms.world.countries, 3)
</script>

space_
شنبه 15 اسفند 1394, 07:53 صبح
این تابع جاوااسکریپت:
<script type="text/javascript">
function checkboxlimit(checkgroup, limit){
var checkgroup=checkgroup
var limit=limit
for (var i=0; i<checkgroup.length; i++){
checkgroup[i].onclick=function(){
var checkedcount=0
for (var i=0; i<checkgroup.length; i++)
checkedcount+=(checkgroup[i].checked)? 1 : 0
if (checkedcount>limit){
alert("You can only select a maximum of "+limit+" checkboxes")
this.checked=false
}
}
}
}
</script>

برای مثال فقط سه بار به کاربر اجازه تیک زدن چک باکس میدیم:
<script type="text/javascript">
checkboxlimit(document.forms.world.countries, 3)
</script>


ممنون کارمو راه انداخت و پیام محدودیت رو میده ولی به یک مشکل دیگه برخورد کردم، من به چک باکسام این خاصیت رو دادم که اگه انتخاب شد یک تصویر کنارش نمایش بده ولی الان با اینکه محدودیت انتخاب وجود داره چون اول چک باکس تیک میخوره بعد پیام محدودیت میاد تصویر بلافاصله نمایش داده میشه و وقتی پیامو می بندم با اینکه چک باکس انتخاب نشده تصویر رو نمایش میده :ناراحت:

از تابع زیر واسه نمایش عکس استقاده میکنم

<script> function toggleVisibility(id) {
var el = document.getElementById(id);


if (el.style.display=="none") {
el.style.display="";
}
else {
el.style.display="none";
}
}
</script>

radeon
شنبه 15 اسفند 1394, 08:32 صبح
کد رو تغییر دادم و یه تابع اضافه کردم که بعد از رسیدن به محدودیت اعمال شده جلوی تیک زدن رو میگیره
برای مثال بعد از انتخاب 3 تیک، تیک زدن بقیه چک باکس ها غیر فعال میشه:

function checkboxlimit(checkgroup, limit){
var checkgroup=checkgroup
var limit=limit
for (var i=0; i<checkgroup.length; i++){
checkgroup[i].onclick=function(){
var checkedcount=0
for (var i=0; i<checkgroup.length; i++)
checkedcount+=(checkgroup[i].checked)? 1 : 0
if (checkedcount>limit){
disableCheck();

this.checked=false
}
}
}
}


تابع disableCheck که در کد بالا اضافه شده:
function disableCheck() {
document.getElementById("checkBoxes").disabled = true;
}

space_
شنبه 15 اسفند 1394, 08:42 صبح
کد رو تغییر دادم و یه تابع اضافه کردم که بعد از رسیدن به محدودیت اعمال شده جلوی تیک زدن رو میگیره
برای مثال بعد از انتخاب 3 تیک، تیک زدن بقیه چک باکس ها غیر فعال میشه:

function checkboxlimit(checkgroup, limit){
var checkgroup=checkgroup
var limit=limit
for (var i=0; i<checkgroup.length; i++){
checkgroup[i].onclick=function(){
var checkedcount=0
for (var i=0; i<checkgroup.length; i++)
checkedcount+=(checkgroup[i].checked)? 1 : 0
if (checkedcount>limit){
disableCheck();

this.checked=false
}
}
}
}


تابع disableCheck که در کد بالا اضافه شده:
function disableCheck() {
document.getElementById("checkBoxes").disabled = true;
}


فک کنم مشکل داره الان چک باکس تیک نمیخوره ولی بازم روش که کلیک میکنم تصویر نمایش داده میشه