Hi,

It's kind of difficult for me to explain for English is not my native
language.

I'll explain it briefly and refer you to the actual page.

If the 'Rule' for a field has a "Required" attribute and with or
without any other attributes, then it works fine.

But when a field has any other 'Rules' attribute other than
'Required', and when the field is blank, it updated the
this.defaultShowErrors(); status but it doesn't update the
"numberOfInvalids" count (it will show there is (1) error).

Here is the actual page: http://www.thaidatelink.com/page/delivery/

Note1: no need to login to test the page, just click on the Radio or
Checkbox to display the form.
Fields without an asterisk sign (not required fields) are those which
has the problem. Type something into any of the following fields:
"Recipient's Email:", "Recipient's Telephone: " and "Message: " then
clear the field, and you shall see that the "this.defaultShowErrors
();" staus will be updated as it should but the "numberOfInvalids"
notify of an error instead though the field isn't a "Required" field.

Hopefully someone could help for I have been trying to solve this
problem without success for the last three days.

Thanks in advanced.

Below is the code I used on the page:

<script type="text/javascript">
$.validator.setDefaults({
        focusInvalid: false
});

$(document).ready(function(){
$("#error_summary_float").hide();
var v = $("#delivery_quotation").validate({
        rules: {
                 recipient_member: { required: true },
                 recipient_username: { required: true,
                                                 nowhitespace: true,
                                                 alphanumeric: true,
                                 minlength: 4,
                                 maxlength: 16 },
                 recipient_name: { required: true,
                           lettersspaces: true,
                           maxlength: 64 },
                 recipient_address: { required: true },
                recipient_email: { email: true,
                                 nowhitespace: true,
                                 maxlength: 64 },
                recipient_phone: { phonenumber: true,
                                   minlength: 9,
                                   maxlength: 32 },
                select_gifts: { required: true },
                "gifts[]": { required: true },
                greeting_card_to: { required: true,
                                            letterswithbasicpunc: true,
                                    maxlength: 64 },
                greeting_card_msg: { lettersnumberspuncspaces: true },
                greeting_card_from: { required: true,
                                       letterswithbasicpunc: true },
                instructions_requests: { maxlength: 500 },
                imgverify: { required: true,
                        minlength: 5,
                        nowhitespace: true,
                        lettersnumbers: true,
                        lowercaseletters: true }
                },
        messages: {
        recipient_member: { required: "Information required!" },
        recipient_username: { required: "This field cannot be empty!",
                        nowhitespace: "No spaces allowed!!",
                        alphanumeric: "Letters, Numbers &amp; Underscores 
only!",
                        minlength: "Minimum 4 characters long!",
                                maxlength: "Maximum 16 characters long!" },
        recipient_name: { required: "This field cannot be empty!",
                                         letterswithbasicpunc: "Letters &amp; 
Basic Punctuation
only!",
                                 maxlength: "Maximum 64 characters long!" },
        recipient_address: { required: "This field cannot be empty!" },
        recipient_email: { email: "Please enter a valid Email Address!",
                         nowhitespace: "No spaces allowed!",
                         maxlength: "Maximum 64 characters long!" },
        recipient_phone: { phonenumber: "Numbers, Brackets &amp; Hyphens
only!",
                          minlength: "Minimum 9 digits long!",
                          maxlength: "Maximum 16 digits long!" },
        select_gifts: { required: "You have not selected any Gift!" },
        "gifts[]": { required: "Please select at least one item!" },
        greeting_card_to: { required: "This field cannot be empty!",
                            letterswithbasicpunc: "Letters &amp; Basic 
Punctuation
only!",
                                    maxlength: "Maximum 64 characters
long!" },
        greeting_card_msg: {
                                lettersnumberspuncspaces: "Letters,
Numbers &amp; Punctuation only!" },
        greeting_card_from: { required: "This field cannot be empty!",
                               letterswithbasicpunc: "Letters &amp; Basic
Punctuation only!",
                               maxlength: "Maximum 64 characters long!" },
        instructions_requests: { maxlength: "Maximum 500 characters
long!"  },
        imgverify: { required: "This field cannot be empty!",
                minlength: "Must be 5 characters long!",
                nowhitespace: "No spaces allowed!",
                lettersnumbers: "Letters &amp; Numbers only!",
                lowercaseletters: "Lowercase letters only!" }
                },
        errorPlacement: function(error, element) {
                if ( element.is(":radio" && "inp...@name='recipient_member']") )
                        error.appendTo( "#recipient_member_status" );
                else if ( element.is(":checkbox" && 
"inp...@name='select_gifts']") )
                        error.appendTo ( "#select_gifts_status" );
                else if ( element.is(":checkbox") && $("inp...@name='gifts']") )
                        error.appendTo ( "#gifts_field_status, #error_fw01, 
#error_fw02,
#error_fw03, #error_fw04, #error_fw05, #error_fw06, #error_fw07,
#error_fw08" );
                else
                        error.appendTo ( element.parent().next() );
                },
        showErrors: function(errorMap, errorList) {
        var errors = this.numberOfInvalids();
        if (errors) {
        var message = errors == 1
                ? 'Your form contains <strong>( 1 )</strong> error.<br />Please
correct the highlighted field in error before submitting this form.'
                : 'Your form contains <strong>( ' + errors + ' )</strong>
errors.<br />Please correct the highlighted fields in error before
submitting this form.';
                        $("#error_summary").html(message);
                        $("#error_summary_float").slideDown();
                        this.defaultShowErrors();
        } else  {
                        $("#error_summary_float").slideUp();
                        this.defaultShowErrors();
                        }
                },
        success: function(label) {
                        // set &nbsp; as text for IE
                        label.html("&nbsp;").addClass("checked");
                }
        });
        $("#submit").click(function() {
          if (v.form())
                {
                $('form').nyroModal();
                }
        else
                { return false;
                }
        });
        var recipient_username = $("#fs_recipient_details");
        var recipient_usernameInputs = recipient_username.find("input,
textarea").attr("disabled", !inital);
        var select_gifts = $("#select_gifts");
        var inital = select_gifts.is(":checked");
        var gifts = $("#fs_flowers");
        var giftsInputs = gifts.find("input").attr("disabled", !inital);
        var greeting_card_to = $("#fs_greeting_card");
        var greeting_card_toInputs = greeting_card_to.find("input,
textarea").attr("disabled", !inital);
        select_gifts.click(function() {
                giftsInputs.attr("disabled", !this.checked).attr('checked', 
false);
                greeting_card_toInputs.attr("disabled", !this.checked).val("");
         });
});
</script>

Reply via email to