jQuery Validation 插件:提示覆盖

Posted

技术标签:

【中文标题】jQuery Validation 插件:提示覆盖【英文标题】:jQuery Validation plugin: prompt for override 【发布时间】:2012-09-05 22:26:02 【问题描述】:

我有一个具有排序验证的 jQuery 表单。这是一个数据输入屏幕,上面有两个文本框。每个文本框的大声值从 1 到无穷大,但第一个控件的“所需”范围为 36-84,第二个控件为 50-300。如果该值在所需范围内,则提交通过。如果范围超出所需范围,但在大声范围内,例如 25 为任一范围,则需要在用户按下提交后提示用户。如果他们对提示说是,则提交通过,如果他们说不,则不提交。

感谢 Cooper Maruyama 的帮助,我已经到了尝试在 ASP.Net 世界中实际实现答案的地步。问题是文本框 id 是在运行时确定的,并被传递给 ids 对象中的初始化函数。

当我运行它时,我收到以下错误:无法获取属性“设置”的值:对象为空或未定义

这是我的代码:

var manageResidentWeightsJs = 

    initialize: function (ids) 

        var cbDeclined = $(ids.cbDeclined);
        var cbIsOutOfFac = $(ids.cbIsOutOfFac);

        $('<div id=errorSummary>The following values fall out side of the normal range:</div>')
                .append('<ul id="errorsList"></ul>').hide().insertAfter(ids.formView);

        var txtHeight = $(ids.txtHeight);
        var txtWeight = $(ids.txtWeight);

        function confirmation() 
            var x;
            var r = confirm("Are you sure?");
            if (r == true)  return true; 
            else  return false; 
        

        $(ids.formView).validate(
            invalidHandler: function (form, validator) 
                if (confirmation())  form.submit(); 
            
        );

        txtHeight.each(function (index, elem)  $(elem).rules("add",  min: 0 ) );
        txtWeight.each(function (index, elem)  $(elem).rules("add",  min: 0 ) );
    

下面的代码被用来调用上面的代码。在此代码中,ASP.Net 已被替换为“#”,以消除问题中的 ASP.Net 因素:)

$(document).ready(function () 
    var ids = 
      formView: '#mainForm',
      txtHeight: '#heightCtrl',
      txtWeight: '#weightCtrl'
    ;

    manageResidentWeightsJs.initialize(ids);
);

【问题讨论】:

【参考方案1】:

告诉验证器“不需要的”范围是“无效的”。然后使用 invalidHandler 显示一个确认框。如果他们点击确定,则强制表单提交。

工作示例:http://jsfiddle.net/FqX6h/14/

您必须根据自己的喜好编辑验证规则。

html

 <form id="form" action="">
    <input type="text" name="some_name" value="" id="some_name" minlength="5">
    <input type="submit" value="submit" class="required" size="10" onclick="">
  </form>

js:

       function confirmation() 
            var r=confirm("Are you sure?");
            if (r==true) return true;
            else return false;
        
        $(function() 
            $("#form").validate(
                rules: 
                    some_name: 
                        required: true
                    
                ,
                invalidHandler: function(form, validator) 
                    if (confirmation()) form.submit();
                
            );
        );

【讨论】:

很抱歉,它没有回答问题:(我将在上面的示例中进行澄清。 我对您的示例的主要问题是它没有使用 jQuery 验证框架。我刚刚想到的一个想法:我可以连接到 sumbit 的 onclick,独立于在验证表明可以提交之后调用的验证吗?这样,只有在系统确保该值大声后才会检查所需的值。 看起来不错,但是...我使用的是 ASP.Net MVC,无法静态放入输入控件的 id。 id 被传递到初始化中,所以我相信我需要在表单上调用 validate 函数后将规则添加到控件中,但是当我这样做时,我得到一个“无法获取属性设置的值” : 对象为空或未定义”错误。将在上面进行编辑以反映我的实际代码。 啊,我明白了。不幸的是,我对 ASP.net MVC 了解不多。这至少应该回答你的 js 问题(并给你一个可以使用的骨架)。 请原谅我,我没有实际运行或尝试运行您的 jsfiddle 示例。它似乎对我不起作用。既然如此,我很难接受它是 js 馅饼的答案。至于 ASP.Net,我将在问题中添加更多内容以澄清那部分,这并不是真正的 ASP.Net 问题...

以上是关于jQuery Validation 插件:提示覆盖的主要内容,如果未能解决你的问题,请参考以下文章

jQuery学习jQuery插件的使用与写法(表单验证插件-validation)

jQuery Textarea-validation 不起作用

jQuery常用插件与jQuery使用validation插件实现表单验证实例

jQuery 插件 validation

jquery表单验证插件validation

jQuery学习——使用JQ插件validation进行表单校验