0

我有这个 jquery 函数:

$(function() {

    $('.submitButton').click(function(){
        $('input').each(function() {
             if ($(this).attr('min')) {
                 if ($(this).val()<$(this).attr('min')){
                      $('#'+$(this).attr('id')+"_errMess").prepend(' Your data should be more than '+$(this).attr('min'));
                  }
              }
        });
    });
});

它似乎只检查输入中输入的第一个数字。因为例如当 'min' 属性的值为 7,输入的值为 10 时,它会显示错误消息(if 条件为真!!)。尽管当我希望它提醒值时,它似乎知道真实值和总值并返回 10。

alert($(this).val());

你能帮我理解什么是错的吗?

4

3 回答 3

1

这里的问题是将“7”与“10”进行比较,而不是 7 与 10 [ASCII 逐个字符比较,而不是实际整数比较]。对值执行 parseInt() 然后进行比较,您应该得到所需的结果。

改变

$(this).val()<$(this).attr('min')

parseInt($(this).val())< parseInt($(this).attr('min'))

在你的 if 条件下

也最好将值提取到变量然后执行比较。

于 2012-12-29T05:52:34.427 回答
1

您缺少从字符串(.val返回字符串)到数字的转换:

$(function() {
    $('.submitButton').click(function() {
        $('input').each(function() {
            if ($(this).attr('min')) {
                if (Number($(this).val()) < Number($(this).attr('min'))) {
                    $('#' + $(this).attr('id') + "_errMess").prepend(' Your data should be more than ' + $(this).attr('min'));
                }
            }
        });
    });​
于 2012-12-29T05:53:21.320 回答
1

val()在 JavaScript 中返回字符串和字符串“10”小于“7”。您实际需要的是数字比较,因此在比较字符串之前parseInt或之前转换它们。Number你可以查看stackoverflow上的另一个问题:为什么字符串“11”小于字符串“3”?.

顺便说一句,您最好将 $(this) 保存到变量中,而不是重复调用 $ 函数。

于 2012-12-29T05:57:25.063 回答