Question

I've looked around and was unable to see anyone else having this issue. I'm using validationEngine and coming across an issue where 2 inputs become required when a particular checkbox is ticked. Even when it is not ticked, they still say that they are required.

    <td>
      <input type="checkbox" value="true" name="Availability_MondayIsAvailable" id="Availability_MondayIsAvailable" checked="checked">&nbsp;&nbsp;Monday
    </td>
    <td>
      <input type="text" value="0:00 AM" size="5" name="Availability_MondayStartTime" id="Availability_MondayStartTime" class="validate[condRequired[Availability_MondayIsAvailable],custom[timeForm]]">


    </td>
    <td><input type="text" value="7:00 PM" size="5" name="Availability_MondayEndTime" id="Availability_MondayEndTime" class="validate[condRequired[Availability_MondayIsAvailable]]">

    </td>

The box is ticked. I untick it and the inputs alert as required anyway.

UPDATE I took what @Shafeeq supplied and created this to handle all 7 days.

function availableDay(day) {
        var yourselector = '#Availability_' + day + 'IsAvailable';
        var yourselectorStart = '#Availability_' + day + 'StartTime';
        var yourselectorEnd = '#Availability_' + day + 'EndTime';
        var onClass = 'validate[condRequired[Availability_' + day + 'IsAvailable],custom[timeForm]]';
           if ($(yourselector).is(':checked')) {
               $(yourselectorStart).attr( "class", onClass );
               $(yourselectorEnd).attr( "class", onClass);
           }
           else {
               $(yourselectorStart).attr( "class"," ");
               $(yourselectorEnd).attr( "class"," ");
           }
}

I also added this to doc ready to trigger the change function for boxes that are previously checked.

$("input[type='checkbox']").trigger("change");

I'm not sure if this issue was a bug in validation engine or what...

Was it helpful?

Solution

If you have added the jquery validation class to element, it always validated, if you don't want required you need to remove the class. For that you can use javascript function in checkbox

  <input type="checkbox" value="true" onchange="set_validation()" name="Availability_MondayIsAvailable" id="Availability_MondayIsAvailable" checked="checked">&nbsp;&nbsp;Monday

Add this function in your javascript

function set_validation() {
   if ($('#Availability_MondayIsAvailable').is(':checked')) {
       $( "#Availability_MondayStartTime" ).attr( "class", "validate[condRequired[Availability_MondayIsAvailable],custom[timeForm]]" );
       $( "#Availability_MondayEndTime" ).attr( "class","validate[condRequired[Availability_MondayIsAvailable]]");
   }
   else {
       $( "#Availability_MondayStartTime" ).attr( "class"," ");
       $( "#Availability_MondayEndTime" ).attr( "class"," ");
   }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top