[SalesForce] Month validation in javascript

if the month was less than today's month then I should show an error message through javascript in visualforce page…….I have tried but unable to…here is my code

/*javascript*/
<script type="text/javascript">
function validmonth()
{
if(exm < Month(today()))
{
condition=1;
alert("Invalid month");
jQuery(".exm").focus();
return false;
}
}
</script>

/* page */
<apex:selectlist value="{!Item.ExpirationMonth}" size="1" styleclass="exm" > 
<apex:selectOptions value="{!item.ExpireMonth}"/>
</apex:selectlist>

/* in constructor */
string dd=datetime.now().format('MM/dd/yyyy');
string mon=dd.substring(0,2);
string year=dd.substring(7,10);
item.ExpirationMonth=mon;

This function validmonth() Ill be calling in Command button…..

Best Answer

You need to use the LIVE Jquery Event to bind to the Change event on the Select List. Here is an example I mocked up. I've used Javascript to get the month (0-11, hence increment by 1)

 <apex:page controller="TestValidateController">
    //INCLUDE JQuery Resources

    <script type="text/javascript">

    var d = new Date();
    var n = d.getMonth() + 1;
    jQuery.noConflict();

//Use the Live event to bind to changes on the Select List
    jQuery(".exm").live('change',

    function ()
    {
    alert('changed ' +  jQuery(".exm option:selected").text());
    if(jQuery(".exm option:selected").text() < n)
    alert('Error');

    }
    );
    </script>

    <apex:form>
    <apex:selectlist value="{!ExpirationMonth}" size="1" styleclass="exm" > 
    <apex:selectOptions value="{!ExpireMonth}"/>
    </apex:selectlist>
    </apex:form>
    </apex:page>

Controller :

public with sharing class TestValidateController {
public integer expirationMonth {get;set;}
public SelectOption[] expireMonth {get; set;}

public TestValidateController(){
expireMonth  = new List<SelectOption>{};
for (integer inti : (new List<integer>{1,2,3,4,5,6,7,8,9,10,11,12}))
expireMonth.add(new SelectOption(inti+'', inti+''));

}
}
Related Topic