Jquery验证输入数字Step = .01无效

时间:2016-06-30 01:49:34

标签: jquery asp.net-mvc validation

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

任何想法??

伊恩

@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>

1 个答案:

答案 0 :(得分:0)

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

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

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

编辑:在JSFiddle中进行一些测试后,我能够复制您的步骤错误(&lt; 1.5无效)。看看this question为什么会发生这种情况。

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

Your best bet is to create a custom validator(例如,float-step并检查其中的值,如果您确实需要验证步长。

Here's a fiddle.