简体   繁体   English

如何使用JavaScript验证动态行+选择的选择?

[英]How to validate dynamic row + chosen select with javascript?

I have the code below 我有下面的代码

http://jsfiddle.net/manojgolty/65xcgaq0/1/ 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: 我从未使用过JQBootstrapValidator ,但是可以改用以下验证器之一:

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: 在您的小提琴中,当您生成选择字段时,您将Chosen插件应用于select字段,然后将select字段添加到使用的验证器中,请参见以下代码:

# Using BootstrapValidator (v0.5.2 or 0.5.3) #使用BootstrapValidator(v0.5.2或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) #使用FormValidation(v0.6.0及更高版本)

$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 #使用JQuery验证

$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'
            }
        }
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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