Jquery 验证 GreaterThanEqual 和 LessThanEqual 在数字 9 以上无法正常工作
Jquery Validation GreaterThanEqual & LessThanEqual not working correctly above number 9
我制作了这个应该可以正常工作的简单表格。我似乎找不到问题所在。在数字字段(长度和宽度)的输入为 9 之前它运行良好,但是当我输入 10 及以上时,它要求更大的数字。
代码如下:
HTML
<div class="form-group col-md">
<label class="form-label mb-1 text-2" for="length">Length</label>
<input type="number" class="form-control text-3 h-auto py-2 sizes-units" name="length" id="length" value="{{ Request::Input('length') }}">
</div>
<div class="form-group col-md">
<label class="form-label mb-1 text-2" for="width">Width</label>
<input type="number" class="form-control text-3 h-auto py-2 sizes-units" name="width" id="width" value="{{ Request::Input('width') }}">
</div>
<div class="form-group col-md">
<label class="form-label mb-1 text-2" for="height">Height</label>
<input type="number" class="form-control text-3 h-auto py-2 sizes-units" name="height" id="height" value="{{ Request::Input('height') }}">
</div>
Jquery
rules: {
length: {
required: true,
min: 2,
max: 30,
greaterThanEqual: "#height",
},
width: {
required: true,
min: 2,
max: 30,
greaterThanEqual: "#height",
},
height: {
required: true,
min: 1,
max: 7,
}
}
如果这是一个愚蠢的问题,我很抱歉。我只在 php 和 laravel 工作过。通过使用预构建的所有内容或使用服务器端验证,我基本上能够避免任何事情 javascript。在这种情况下我不能,因为这个表格应该计算同一页面上的定价并且正在使用“获取”请求所以...
首先,我假设您正在使用 jQuery Validate 作为验证插件 - 您没有指定。
我不能 100% 确定,但我很确定是您的 'greaterThanEqual' 规则导致了至少一些问题。
编辑:
既然你已经确认你正在使用 https://github.com/jquery-validation/jquery-validation/blob/master/src/additional/greaterThanEqual.js 方法,那么从我的测试来看,它应该只是一个改变的例子:
return value >= target.val();
到
return value >= parseInt(target.val());
将值转换为整数,而不是您怀疑的字符串。这似乎现在有效。
我制作了这个应该可以正常工作的简单表格。我似乎找不到问题所在。在数字字段(长度和宽度)的输入为 9 之前它运行良好,但是当我输入 10 及以上时,它要求更大的数字。
代码如下:
HTML
<div class="form-group col-md">
<label class="form-label mb-1 text-2" for="length">Length</label>
<input type="number" class="form-control text-3 h-auto py-2 sizes-units" name="length" id="length" value="{{ Request::Input('length') }}">
</div>
<div class="form-group col-md">
<label class="form-label mb-1 text-2" for="width">Width</label>
<input type="number" class="form-control text-3 h-auto py-2 sizes-units" name="width" id="width" value="{{ Request::Input('width') }}">
</div>
<div class="form-group col-md">
<label class="form-label mb-1 text-2" for="height">Height</label>
<input type="number" class="form-control text-3 h-auto py-2 sizes-units" name="height" id="height" value="{{ Request::Input('height') }}">
</div>
Jquery
rules: {
length: {
required: true,
min: 2,
max: 30,
greaterThanEqual: "#height",
},
width: {
required: true,
min: 2,
max: 30,
greaterThanEqual: "#height",
},
height: {
required: true,
min: 1,
max: 7,
}
}
如果这是一个愚蠢的问题,我很抱歉。我只在 php 和 laravel 工作过。通过使用预构建的所有内容或使用服务器端验证,我基本上能够避免任何事情 javascript。在这种情况下我不能,因为这个表格应该计算同一页面上的定价并且正在使用“获取”请求所以...
首先,我假设您正在使用 jQuery Validate 作为验证插件 - 您没有指定。
我不能 100% 确定,但我很确定是您的 'greaterThanEqual' 规则导致了至少一些问题。
编辑:
既然你已经确认你正在使用 https://github.com/jquery-validation/jquery-validation/blob/master/src/additional/greaterThanEqual.js 方法,那么从我的测试来看,它应该只是一个改变的例子:
return value >= target.val();
到
return value >= parseInt(target.val());
将值转换为整数,而不是您怀疑的字符串。这似乎现在有效。