jquery验证和功能

时间:2015-03-29 12:07:00

标签: jquery jquery-validate

我想将我的函数添加到jquery验证中。没有链接到任何html元素,只需在"验证"事件发生。我只是尝试以下方式:

$('#form1').validate({
    rules: {
        hours: true
}
});


$.validator.addMethod("hours", function (value, element, param) {
    return false;
});

它不起作用。如何正确地做到这一点?

已添加

HTML:

<form action="/Home/Valid8" id="form1" method="post" name="form1"><input name="__RequestVerificationToken" type="hidden" value="7xLtyNBlPK1kZ3YD5BQwtbxNq2kQEq1M-t1zq3ZCUs8gnUjStQNJ14QEybjo_tbU_x2QD0KfT79YoJg4CqhuaIir73fVJSf2V8CI4crUxJI1" />    <div class="form-horizontal">

    <div class="form-group">
        <label class="control-label col-md-2" for="Number">Number</label>
        <div class="col-md-10">
            <input class="form-control text-box single-line" data-val="true" data-val-number="The field Number must be a number." data-val-range="The field Number must be between 0 and 24." data-val-range-max="24" data-val-range-min="0" data-val-required="The Number field is required." id="Number" name="Number" type="number" value="0" />
            <span class="field-validation-valid text-danger" data-valmsg-for="Number" data-valmsg-replace="true"></span>
        </div>
    </div>

        <div>
            <div class="form-control-static input-validation-error"
                 data-val="true"
                 data-val-number="The field Number must be a number."
                 data-val-hours="The field Number must be between 0 and 24."
                 data-val-hours-max="24"
                 data-val-required="The Number field is required."
                 id="Number2" name="Number2" />
            <br />
            <span class="text-danger field-validation-valid" data-valmsg-for="Number2" data-valmsg-replace="true"></span>
        </div>

        <input type="button" id="btnSet" value="set" />

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
</form>

脚本:

<script>
    $(function () {
        $('#btnSet').on('click', function () {
            $('#Number2').html('-5');
        });
    });

    $('#form1').validate({
        rules: {
            Number2: {
                hours: true
            }
        }
    });


    $.validator.addMethod("hours", function (value, element, param) {
        //var r = (value > 0)
        var r = false;

        return r;
    }, 'Error Message Here');

    $.validator.unobtrusive.adapters.addSingleVal("hours", "max");
</script>

btnSet只是用于模拟用户的动作。 当我点击&#34;提交&#34;页面正在重新加载(即使第一个字段的验证器不起作用)。如果我删除

    $('#form1').validate({
        rules: {
            Number2: {
                hours: true
            }
        }
    });

然后第一场的验证者工作

1 个答案:

答案 0 :(得分:0)

如何使用.addMethod()

您未能将规则分配给输入字段。如果没有看到您的HTML,我就不知道该字段或其实际的name

$('#form1').validate({
    rules: {
        yourField: { // <-- the field NAME attribute
            hours: true
        }
    }
});

您还需要定义错误消息...

$.validator.addMethod("hours", function (value, element, param) {
    return false;
}, 'Error Message Here');

DEMO:http://jsfiddle.net/efqoLwr7/


  

&#34;我想将我的函数添加到jquery验证中。没有链接到任何html元素,只需在&#34;验证&#34;事件发生。&#34;

你必须准确解释你想做什么。您只能为输入字段分配规则/方法;你不能随时运行任何方法。

  • .addMethod()方法仅用于创建分配给一个或多个输入字段的新/自定义规则。

  • 没有&#34;验证&#34;事件。当您{{1}中的相关元素发生focusoutkeyup或按钮click事件时,jQuery Validate插件会在指定的输入字段上触发声明的规则/方法}}

否则,您可以使用自己的功能覆盖各种选项,以便自定义某些行为。 Refer to the documentation for the complete list of options