Tony
Tony

Reputation: 2754

jQuery validation to ensure at least one dropdown is set to a certain value

I have a form with three dropdowns. What's the easiest way to ensure that at least one is set to "C"?

Something with $("#Statuses").each or $(".Droppie").each?

<div id="Statuses">
   <table>
      <tr>
         <td>To Do</td>
         <td>Status</td>
      </tr>
      <tr>
         <td>Call</td>
         <td>
            <select id="Call" name="Call" class="Droppie">
               <option value="A">Active</option>
               <option value="B">Bounced</option>
               <option value="C">Closed</option>
            </select>
         </td>
      </tr>
      <tr>
         <td>Meet</td>
         <td>
            <select id="Meet" name="Meet" class="Droppie">
               <option value="A">Active</option>
               <option value="B">Bounced</option>
               <option value="C">Closed</option>
            </select>
         </td>
      </tr>
      <tr>
         <td>Followup</td>
         <td>
            <select id="Followup" name="Followup" class="Droppie">
               <option value="A">Active</option>
               <option value="B">Bounced</option>
               <option value="C">Closed</option>
            </select>
         </td>
      </tr>
   </table>
   <input type="button" name="Save" id="Save" value="Save" />
</div>

<script>
   SaveCheck = function () {
   -- jquery .each ?? --
     { alert("Sorry, at least one to-do must be closed."); }
   $("#Save").click( SaveCheck );
</script>

Upvotes: 2

Views: 2719

Answers (4)

Ryley
Ryley

Reputation: 21226

For the heck of it, here's a simpler version:

$('#Save').click(function() {
    if($('.Droppie option[value="C"]:selected').length > 0) {
        alert('successfull');
    }
    else {
        alert("Sorry, at least one to-do must be closed.");
    }
});

Upvotes: 3

halilb
halilb

Reputation: 4115

You should check every selected items of Droppie class each time Save button clicked.

jsfiddle.net

$('#Save').click(function() {
    if(SaveCheck()) {
        alert('successful');
    }
    else {
        alert("Sorry, at least one to-do must be closed.");
    }
});

function SaveCheck() {
    var flag = false;
    $('.Droppie :selected').each(function() {
        if($(this).val() == "C") {
            flag = true;
            return false;
        }
    });
    return flag;
}

Upvotes: 6

polin
polin

Reputation: 2845

I think you can use this code

    <div id="Statuses">
   <table>
      <tr>
         <td>To Do</td>
         <td>Status</td>
      </tr>
      <tr>
         <td>Call</td>
         <td>

            <select id="Call" name="Call" id="Call" class="Droppie">
               <option value="A">Active</option>
               <option value="B">Bounced</option>
               <option value="C">Closed</option>
            </select>

         </td>
      </tr>
      <tr>
         <td>Meet</td>
         <td>
            <select id="Meet" name="Meet" id="Meet" class="Droppie" >
               <option value="A">Active</option>
               <option value="B">Bounced</option>
               <option value="C">Closed</option>
            </select >
         </td>
      </tr>
      <tr>
         <td>Followup</td>
         <td>
            <select id="Followup" name="Followup" id="Followup" class="Droppie" >
               <option value="A">Active</option>
               <option value="B">Bounced</option>
               <option value="C">Closed</option>
            </select >
         </td>
      </tr>
   </table>
   <input type="button" name="Save" id="Save" value="Save" onclick="return fnc()"/>
</div>

<script type="text/javascript">
   function fnc()
   {
       call=document.getElementById("Call").value;

       meet=document.getElementById("Meet").value;

       followup=document.getElementById("Followup").value;

       if(call!='C' && meet!='C' && followup!='C' )
       {
           alert("no c is selected");
       return false;
       }
    }
</script>

Upvotes: 0

Pragnesh Chauhan
Pragnesh Chauhan

Reputation: 8476

var flag = false;
$('select.Droppie :selected').map(function() {
  if(this.value == 'C'){
      flag = true;
  }
});

if(flag){
   alert('contain C');
} else {
   alert("Doesn't contain C");
}

Upvotes: 1

Related Questions