简体   繁体   中英

How to validate dynamic row + chosen select with javascript?

I have the code below

http://jsfiddle.net/manojgolty/65xcgaq0/1/

    // Chosenify every multiple select DOM elements with class 'chosen'
    $('.chosen-selects').chosen({
        width: '100%',
        allow_single_deselect : true,
        no_results_text : 'Oops, No Results Found for - '
    });

Here is the problem.
<i>how to validate the dynamically created row using javascript..

Please provide solution even in the jquery as well.

Thanks for your guidance.</i>

I've never used JQBootstrapValidator , but you can use one of those following validators instead:

In your fiddle, when you generate your select field, you applied the Chosen plugin to your select field, just after that add your select field to the used validator, see following code:

# Using BootstrapValidator (v0.5.2 or 0.5.3)

$clone.find('select').each(function () {
    // ...
    $(this).chosen({
        // ...
    });
    // <=== Here add your field to BootstrapValidator
    // Revalidate your field when it is changed
    $(this).change(function(e) {
        $('#yourForm').bootstrapValidator('revalidateField', $(this));
    });
    // Add it using the `rules` method
    $('#yourForm').bootstrapValidator('addField', $(this), {
        validators: {
            notEmpty: {
                message: 'Please select an option'
            }
        }
    });
    // ===>
}).end()

And then call the validator:

$('#yourForm')
    .find('.chosen-selects')
        .chosen({
            width: '100%',
            allow_single_deselect : true,
            no_results_text : 'Oops, No Results Found for - '
        })
        // Revalidate your field when it is changed
        .change(function(e) {
            $('#yourForm').bootstrapValidator('revalidateField', 'your_field_name');
        })
        .end()
    .bootstrapValidator({
        excluded: ':disabled', // <=== make sure to use this option
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            your_field_name: {
                validators: {
                    notEmpty: {
                        message: 'Please choose an option'
                    }
                }
            }
        }
    });

# Using FormValidation (v0.6.0 and above)

$clone.find('select').each(function () {
    // ...
    $(this).chosen({
        // ...
    });
    // <=== Here add your field to FormValidation
    // Revalidate your field when it is changed
    $(this).change(function(e) {
        $('#yourForm').formValidation('revalidateField', $(this));
    });
    // Add it using the `rules` method
    $('#yourForm').formValidation('addField', $(this), {
        validators: {
            notEmpty: {
                message: 'Please select an option'
            }
        }
    });
    // ===>
}).end()

And then call the validator:

$('#yourForm')
    .find('.chosen-selects')
        .chosen({
            width: '100%',
            allow_single_deselect : true,
            no_results_text : 'Oops, No Results Found for - '
        })
        // Revalidate your field when it is changed
        .change(function(e) {
            $('#yourForm').formValidation('revalidateField', 'your_field_name');
        })
        .end()
    .formValidation({
        framework: 'bootstrap',
        excluded: ':disabled', // <=== make sure to use this option
        icon: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            your_field_name: {
                validators: {
                    notEmpty: {
                        message: 'Please choose an option'
                    }
                }
            }
        }
    });

# Using JQuery-validation

$clone.find('select').each(function () {
    // ...
    $(this).chosen({
        // ...
    });

    // <=== Here add your field to Jquery-validation
    // Revalidate your field when it is changed
    $(this).change(function(e) {
        $(this).valid();
    });
    // Add it using the `rules` method
    $(this).rules( "add", {
        required: true,
        messages: {
            required: "Please select an option"
        }
    });
    // ===>
}).end()

And then call the validator:

$('#yourForm')
    .find('.chosen-select')
        // Revalidate your field when it is changed
        .change(function(e) {
            $(this).valid();
        })
        .end()
    .validate({
        ignore: ":hidden:not(select)", // <=== make sure to use this option
        rules: {
            your_initial_select_field: {
                required: true
            }
        },
        messages: {
            your_initial_select_field: {
                required: 'Please select an option'
            }
        }
    });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM