• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اعتبارسنجی دکمه های رادیویی
#1
سلام.یه فرم نظرسنجی هست با تعدادی سوال که هر کدوم از سوال ها سه چهار پنج تا گزینه دارن.
چه جوری میشه یه تابع جاوا اسکریپت اعتبارسنجی براش نوشت که کاربر مجاز به پاسخ دادن به تمام سوالات باشه.
اینو نوشتم به عنوان تست اما مشکلی که داره اینه که طرف مجبوره گزینه ی اول هر سوال رو انتخاب کنهDodgy من جاوا اسکریپت زیاد بلد نیستم.
کد:
function testfill()
{
var i;
for (i=1 ; i <= 5 ; i++) {
   var name = i;
   var valueName = document.getElementById(name).checked;
   if (valueName == "") {
      // Error
      alert("پاسخگویی به تمامی سوالات الزامی است");
      document.getElementById(name).focus();
        return false;
   }
}
}
میشه راهنماییم بفرمایین.خیلی عجله ای باید اینو تحویل بدم امشب و یه مقدار حالم خوب نیست قدرت تحلیلم اومده پایینUndecided

الان فرض کردم تعداد سوالات 5تاست و نام فیلدها هم مثلا 1.2.3.4.5 هست که هرکدوم ممکنه سه چهارتا گزینه داشته باشن
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#2
من یه بار از این کد استفاده کردم ، خیلی بهینه نیست ، ولی جواب میده .
کد:
<html>
<head>
<meta charset="utf-8"/>
<script type="text/javascript">
function CheckBoxesValidations() {
if (document.form1.CHKBOX1.checked == false &&
    document.form1.CHKBOX2.checked == false &&
    document.form1.CHKBOX3.checked == false
    ||
    
    document.form1.CHKBOX4.checked == false &&
    document.form1.CHKBOX5.checked == false &&
    document.form1.CHKBOX6.checked == false
    
    ) {
    alert('pleae all question ');
       return false;

     }

    else {

  return true;

  }
  

}
</script>
<script type="text/javascript">
function myfunction() {
  alert("ok");
  }
</script>
</head>
<body>
            
            <form onsubmit="return  myfunction() ;" name="form1" action="" >
            <p>soal1</p>
            <input type="checkbox" name="CHKBOX1" id="CHKBOX1" value="1" dir="rtl"/>گزینه اول

            <input type="checkbox" name="CHKBOX2" id="CHKBOX2" value="2"/>گزینه دوم

            <input type="checkbox" name="CHKBOX3"  id="CHKBOX3" value="3"/>گزینه سوم
            
            <br/><p>soal2</p>
            <input type="checkbox" name="CHKBOX4" id="CHKBOX4" value="1" dir="rtl"/>گزینه اول

            <input type="checkbox" name="CHKBOX5" id="CHKBOX5" value="2"/>گزینه دوم

            <input type="checkbox" name="CHKBOX36"  id="CHKBOX6" value="3"/>گزینه سوم
            
            <input type="button" onclick=" CheckBoxesValidations() && myfunction()"    value="انتخاب" />
            </form>
</body>
</html>
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#3
ماله شما اسم فیلدها فرق میکنه.
ماله من 18تا سواله. هر سوال چند تا گزینه داره.
که آیدی اون سوال رو کردم نام فیلد.
مثلا اگه سوال اول آی دیش یک باشه و سه تا گزینه داشته باشه نام هر سه فیلد 1 هست.

به صورت دستی میشه بیاد آدم تعریف کنه مثل شما...اما میخوام به صورت اتومات باشه و خودش حساب کنه همه چیز رو
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#4
از پلاگین های jquery استفاده کنید.
خدایا، این دنیا را بیهوده نیافریدی.
  پاسخ
تشکر شده توسط :
#5
ببینین حتی الان اومدم مدل تابع که پری دریایی نوشته دستی نوشتم تابعمو اما اولین پیغام خطا رو که میده به جای اینکه برگرده به یکی از عناصر فرم ، پردازش فرم رو انجام میده و ادامه میده کارشو....خواهش میکنم کمکم کنین...معدم ام بدجوری اذیت میکنه و میخوام برم درمانگاه اما باید اینو اول اصلاح کنم بعد برم
کد:
function CheckBoxesValidations() {
if ((document.savefrm.a1[0].checked == false &&
    document.savefrm.a1[1].checked == false &&
    document.savefrm.a1[2].checked == false &&
    document.savefrm.a1[3].checked == false &&
    document.savefrm.a1[4].checked == false)

    ||
    
    (document.savefrm.a2[0].checked == false &&
    document.savefrm.a2[1].checked == false &&
    document.savefrm.a2[2].checked == false)
    ||
        
   ( document.savefrm.a3[0].checked == false &&
    document.savefrm.a3[1].checked == false &&
    document.savefrm.a3[2].checked == false)
    ||
    
   ( document.savefrm.a4[0].checked == false &&
    document.savefrm.a4[1].checked == false &&
    document.savefrm.a4[2].checked == false)
    ||
    
   ( document.savefrm.a5[0].checked == false &&
    document.savefrm.a5[1].checked == false &&
    document.savefrm.a5[2].checked == false)
    ||
    
    (document.savefrm.a6[0].checked == false &&
    document.savefrm.a6[1].checked == false &&
    document.savefrm.a6[2].checked == false)
    ||
    
    (document.savefrm.a7[0].checked == false &&
    document.savefrm.a7[1].checked == false &&
    document.savefrm.a7[2].checked == false)
    ||
    
    (document.savefrm.a8[0].checked == false &&
    document.savefrm.a8[1].checked == false &&
    document.savefrm.a8[2].checked == false)
    ||
    
    (document.savefrm.a9[0].checked == false &&
    document.savefrm.a9[1].checked == false &&
    document.savefrm.a9[2].checked == false)
    ||
    
   ( document.savefrm.a10[0].checked == false &&
    document.savefrm.a10[1].checked == false &&
    document.savefrm.a10[2].checked == false)
    ||
    
   ( document.savefrm.a11[0].checked == false &&
    document.savefrm.a11[1].checked == false &&
    document.savefrm.a11[2].checked == false)
    ||
    
    (document.savefrm.a12[0].checked == false &&
    document.savefrm.a12[1].checked == false &&
    document.savefrm.a12[2].checked == false)
    ||
    (document.savefrm.a13[0].checked == false &&
    document.savefrm.a13[1].checked == false &&
    document.savefrm.a13[2].checked == false)
    ||
    (document.savefrm.a14[0].checked == false &&
    document.savefrm.a14[1].checked == false &&
    document.savefrm.a14[2].checked == false)
    ||
   ( document.savefrm.a15[0].checked == false &&
    document.savefrm.a15[1].checked == false &&
    document.savefrm.a15[2].checked == false)
    ||
   ( document.savefrm.a16[0].checked == false &&
    document.savefrm.a16[1].checked == false &&
    document.savefrm.a16[2].checked == false &&
    document.savefrm.a16[3].checked == false &&
    document.savefrm.a16[4].checked == false &&
    document.savefrm.a16[5].checked == false)
    ||
   ( document.savefrm.a17[0].checked == false &&
    document.savefrm.a17[1].checked == false &&
    document.savefrm.a17[2].checked == false)
    ||
   ( document.savefrm.a18[0].checked == false &&
    document.savefrm.a18[2].checked == false)
    ) {
    alert('پاسخگویی به تمام سوالات الزامی است');
   document.getElementsByName("a1").focus();
    return false;
     }  

}
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#6
نقل قول:معدم ام بدجوری اذیت میکنه و میخوام برم درمانگاه اما باید اینو اول اصلاح کنم

اشکال نداره! خود منم از دیشب تا ساعت 6 صبح امروز بیمارستان بودم Big Grin
هنوزم فرصت نشده بخوابم Angel

سورس واضحه، اما اگر مشکل داشتی بگو تا توضیح بدم برات.

کد:
<html>
<head>
<script type="text/javascript" language="javascript" src="jquery.js"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function(e) {
    var q= new Array();
    var count=4; // count question;
    

    $('input:radio').click(function(){
        id=$(this).attr('id');
        q[id]=true;
    });
    
    $('#sub').click(function(){
        for(i=0;i<=count;i++)
            if(!q[i])
                alert('Q'+(i+1)+': false!');
    });        
});
</script>
</head>
<body>
<div id="result"></div>
<br>
<h3> Q1:</h3>
<input type="radio" name="r1[]" id="0"> R1<br>
<input type="radio" name="r1[]" id="0"> R2<br>
<input type="radio" name="r1[]" id="0"> R3<br>

<h3> Q2:</h3>
<input type="radio" name="r2[]" id="1"> R1<br>
<input type="radio" name="r2[]" id="1"> R2<br>
<input type="radio" name="r2[]" id="1"> R3<br>

<h3> Q3:</h3>
<input type="radio" name="r3[]" id="2"> R1<br>
<input type="radio" name="r3[]" id="2"> R2<br>
<input type="radio" name="r3[]" id="2"> R3<br>

<h3> Q4:</h3>
<input type="radio" name="r4[]" id="3"> R1<br>
<input type="radio" name="r4[]" id="3"> R2<br>
<input type="radio" name="r4[]" id="3"> R3<br>

<h3> Q5:</h3>
<input type="radio" name="r5[]" id="4"> R1<br>
<input type="radio" name="r5[]" id="4"> R2<br>
<input type="radio" name="r5[]" id="4"> R3<br>

<input type="submit" name="sub" value="Submit" id="sub">
</body>
</html>

موفق باشی و امیدوارم هر چی زودتر حالت خوب شه Wink
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط : pary_daryayi
#7
حاجی نتونستم از این استفاده کنم. فعلا واسه حل شدن اون مشکل همون کد طولانی ای که گذاشتم رو میشه ببینین که چرا بعد از نمایش خطا میره به صفحه پردازش فرم؟
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#8
کد رو یه مقدار اصلاح کردم.

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

چرا؟ مشکلت چیه؟
اصلا میتونی برای هر سوال یک گزینه رو به طور پیش فرض انتخاب کنی تا در صورت نیاز شخص اصلاحش کنه! البته اگر مشکل ایجاد نمیکنه.
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط :
#9
این کد اصلاح شده ی شما اگه فرم خالی باشه به ازای تعداد فیلدهایی که داری پیغام خطا میده. مثلا الان 5تاست اگه فرم خالی باشه 5تا پیغام خطا میده. اون کدجاوایی که من گذاشتم مشخصه که چرا بعد از پیغام خطا فرم اجرا میشه؟
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#10
مگه تعداد سوالاتت از قبل معلوم نیست؟

به تعداد سوالاتت باید مقدار متغیر count رو اصلاح کنی
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان