【问题标题】:Jquery Validate Input Number Step=.01 not workingJquery Validate Input Number Step=.01 不工作
【发布时间】:2016-06-30 01:49:34
【问题描述】:

希望有人可以提供帮助,我一直在疯狂地试图解决这个问题。 我正在开发一个 MVC 5 应用程序。 我在我的视图模型中创建了一个表单和表格。以下是我正在使用的 2 个文本框输入。 Jquery Validation 在 step=.10 的标记输入框上放置了一个验证规则,即使我没有专门设置该规则并且该规则不起作用。文本框为许多输入提供错误,包括(1.1、1.2、1.3,但输入 1.6 通过。)错误是“请指定 0.1 的倍数” 另一个奇怪的事情是,如果从本地主机调试运行,这工作正常,但是当我发布到托管服务器时,它根本不起作用。 10的soldbox步骤工作正常,没有验证。

有什么想法吗??

伊恩

@Html.TextBox("markup" + @item.ID, (item.markup == 0 ? new decimal(1.0) : item.markup), new { data_id = item.ID, style = "width:75px", @class = "markupbox form-control", @type = "number", @min = 0, @step = .10 })

@Html.TextBox("sold" + @item.ID, new decimal(0), new { data_id = item.ID, style = "width:75px", @class = "soldbox form-control", @type = "number", @min = 0, @max = 100, @step = 10 })

//JAVA SNIPPET
$('#livecartitems').validate({
        errorClass: "text-danger"
    });


        $('.soldbox').each(function () {
        $(this).rules('add', {
            min: 0,
            max: 100,
            messages: {
                min: "must be >= 0",
                max: "must be <= 100"
            }
        })
        $(this).rules('remove', 'step');
    });
});

//EDITTED JAVASCRIPT - 仍然不起作用

 $('#livecartitems').validate({
        errorClass: "text-danger"
    });
    $('.markupbox').rules('remove', 'step');

我只是尝试了一个非常简单的例子...... 相同的行为。 1.5不行,但1.6通过。很奇怪。接下来我将尝试重新加载 JS 文件或将它们指向 google 托管的 JS 脚本。

<form id="testform">
  @Html.TextBox("markup", new decimal(1.0), new { @style = "width:75px", @class = "markupbox form-control", @type = "number", @min = 0, @step = .10 })
</form>

<script src="@Url.Content("~/Scripts/jquery.validate.js")"    type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
<script type="text/javascript">
$('#testform').validate({
    errorClass: "text-danger"
});
</script>

【问题讨论】:

    标签: jquery asp.net-mvc validation


    【解决方案1】:

    我相信 jQuery Validate 插件会根据您的标记和输入类型自动应用规则。您正在尝试使用 $(this).rules('remove', 'step'); 删除规则,但是您将其应用于错误的输入,因为它包含在 $('.soldbox').each(function () { ... } 中。

    $('.markupbox').rules('remove', 'step'); 将解决这个问题(将其添加到范围之外)。

    至于不能在生产中工作,没有足够的细节。确保 jQuery 和 Validate 插件正确加载并检查控制台是否有错误。

    编辑:在 JSFiddle 中进行一些测试后,我能够复制您的步骤错误(this question 了解为什么会这样。

    不过,我可以使用.rules('remove', 'step') 方法删除step 检查。初始化插件时也可以通过step: false规则。

    Your best bet is to create a custom validator(例如,float-step 并在您确实需要验证步长时检索那里的值。

    Here's a fiddle.

    【讨论】:

    • 您好,感谢您的回复。实际上我之前也有过,但它没有用。我刚刚更新了我的javascript。仍然不起作用。我将在单个页面上对此进行测试,并尝试查看是否可以重新加载 JS 脚本。
    • 谢谢。我很高兴你能够证实我所看到的。太令人沮丧了!希望他们解决这个问题。我仍然无法使删除规则起作用,但能够添加 step: false 规则并且可以删除验证。我不需要验证,因为我已经进行了正则表达式验证以防止超过 2 个小数位。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 2018-04-04
    • 1970-01-01
    相关资源
    最近更新 更多