【问题标题】:jQuery custom validation in asp.net mvc 3 razor viewasp.net mvc 3 razor 视图中的 jQuery 自定义验证
【发布时间】:2013-05-28 06:47:45
【问题描述】:

我对 JS/jQuery 有非常基本的了解。我需要检查某些文本框的值。该示例只是重新创建了我在实际应用程序中遇到的问题,该应用程序要大得多,并且表是根据数据库中的数据动态创建的,因此在运行时我添加了我的 jQuery 逻辑所基于的类。

这是 jsfiddle 示例 - http://jsfiddle.net/Xhnbm/

我需要做三种不同的检查 - 浮点数、字符串长度和浮点数,但是您可能会看到未执行验证我总是得到整数异常,即使您删除整数检查,验证也是也不起作用,所以我想问题不在于函数本身,而在于其他地方。

感谢您的帮助。

附言

如果不添加代码,我似乎无法提交问题。所有代码都在 jsfiddle 示例中,但由于我也需要在此处添加一些代码,因此我认为问题在于我声明执行检查的可能函数的方式或此处:

$('#submitDocument').click(function () {
            try {
                if ($(".checkString16").val().length > 16) {
                    throw "The text can be up to 16 symbols";
                } else if (!mathFunctions.isInt($(".checkULong").val())) {
                    throw "Insert integer";
                } else if (!mathFunctions.isFloat($(".checkFloat").val())) {
                    throw "Insert float";
                }
                validationResult = true;
            } catch (exc) {
                alert(exc)
                validationResult = false;
            }
            return validationResult;
        });

单击提交按钮时我尝试执行验证的方式。但我根本不是 Js 程序员,我不想给你指出错误的方向。

【问题讨论】:

  • 你应该试试 $(".checkString16 input[type='text']").each(function(){ if($(this).val().length > 16) { /* 你的代码在这里*/ } });等等。请注意,您不是在检查 .val() 的输入,而是检查 span,这会导致错误。
  • 好吧,你说的大部分我都理解了。我也对跨度以及它们如何干扰代码流有一些疑问,但是您能否提供您给出的建议的任何实现,甚至只是一些我可以开发到我需要的基本的东西。
  • 看看我的回答

标签: javascript jquery asp.net-mvc-3


【解决方案1】:
$('#submitDocument').click(function () {
        var validationResult = true;
            if ($(".checkString16 input[type='text']:first").val().length > 16) {
                validationResult=false;
            } else if (!mathFunctions.isInt($(".checkULong input[type='text']:first").val())) {
                validationResult=false;
            } else if (!mathFunctions.isFloat($(".checkFloat input[type='text']:first").val())) {
                validationResult=false;
            }
        return validationResult;
    });

这应该可以解决问题。 如果 #submitDocument 是输入 type='submit' 并且您使用它来提交表单,您应该尝试这种方式:

$('#submitDocument').click(function (e) {
            if ($(".checkString16 input[type='text']:first").val().length > 16) {
                e.preventDefault();
            } else if (!mathFunctions.isInt($(".checkULong input[type='text']:first").val())) {
                e.preventDefault();
            } else if (!mathFunctions.isFloat($(".checkFloat input[type='text']:first").val())) {
                e.preventDefault();
            }
    });

e.preventDefault() 将阻止提交按钮执行默认处理程序,即提交表单。

您始终可以从代码中手动提交表单,使用 $("#formId").submit();

PS。确保您也在后面的代码中验证这些值,因为简单的 jquery 验证很容易实现。

【讨论】:

  • 是的,就像你猜的一样,但我认为这在小提琴示例中是可见的。但是,似乎检查整数和浮点数的逻辑本身就被破坏了。我不完全确定,但似乎是这样。我会接受你的回答,看看还有什么问题。谢谢。
  • 你可以试试: !mathFunctions.isInt(parseInt($(".checkULong input[type='text']:first").val())) 和 !mathFunctions.isFloat(parseFloat ($(".checkFloat input[type='text']:first").val()))。我认为 val() 函数返回文本,您需要先解析它。有关 float/int 解析本身的更多信息,请访问 stackoverflow.com/questions/1272696/…
  • 是的,后端对我来说更清楚。您的代码运行良好,实际上是验证函数中的逻辑不起作用。我会看到你的其他建议,看看我会做多深。非常感谢您的支持。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多