【问题标题】:Specifying validation for specific form in some page在某些页面中指定特定表单的验证
【发布时间】:2016-07-16 06:56:26
【问题描述】:

我有一个 javascript 函数,可以在提交之前验证弹出表单。不幸的是,它的创建是为了每页只处理一个弹出表单。
就我而言,我有两种不同的弹出表单,所以我想指定要做什么以及针对哪一个。

$.fn.goValidate = function() {
var $form = this,
    $inputs = $form.find('input:text');

var validators = {
    email: {
        regex: /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/
    }
};
var validate = function(klass, value) {
    var isValid = true,
        error = '';

    if (!value && /required/.test(klass)) {
        error = 'This field is required';
        isValid = false;
    } else {
        klass = klass.split(/\s/);
        $.each(klass, function(i, k){
            if (validators[k]) {
                if (value && !validators[k].regex.test(value)) {
                    isValid = false;
                    error = validators[k].error;
                }
            }
        });
    }
    return {
        isValid: isValid,
        error: error
    }
};
var showError = function($input) {
    var klass = $input.attr('class'),
        value = $input.val(),
        test = validate(klass, value);

    $input.removeClass('invalid');
    $('#form-error').addClass('hide');

    if (!test.isValid) {
        $input.addClass('invalid');

        if(typeof $input.data("shown") == "undefined" || $input.data("shown") == false){
           $input.popover('show');
        }

    }
  else {
    $input.popover('hide');
  }
};

$inputs.keyup(function() {
    showError($(this));
});

$inputs.on('shown.bs.popover', function () {
    $(this).data("shown",true);
});

$inputs.on('hidden.bs.popover', function () {
    $(this).data("shown",false);
});

$form.submit(function(e) {

    $inputs.each(function() {
        if ($(this).is('.required') || $(this).hasClass('invalid')) {
            showError($(this));
        }
    });
    if ($form.find('input.invalid').length) {
        e.preventDefault();
        $('#form-error').toggleClass('hide');
    }
});
return this;
};
$('form').goValidate(); 

我很确定这一切都与这一行有关:

$('form').goValidate();  

假设第一个表单 id 是 form_1,第二个是 form_2。 我应该在这条线上放什么? 我猜是这样的:

 $('form['form_1]').goValidate(); 

希望清楚,谢谢!

【问题讨论】:

  • 然后你会写$('#form_1').goValidate(); 假设form_1 是第一种形式的id。
  • 你摇滚!!!多么快速的反应,感谢战利品! :)

标签: javascript jquery ruby-on-rails forms


【解决方案1】:

您可以使用表单id 来定位您的表单。

例如。如果你的第一个表单有 id form1 那么你可以写。

$('#form1').goValidate();

和第二个一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-26
    • 2018-04-02
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2018-12-10
    相关资源
    最近更新 更多