检查哪个输入字段在keyup上具有更大的值

时间:2014-05-21 09:00:09

标签: jquery html html5 forms

如果两个字段都有值,我想在列表中输出两个input字段值中哪一个更高。

除了我还要比较0值之外,这似乎有效。现在,如果我尝试使用099,则没有任何结果,因为.input1不是true。另外,如果我有更多字段可供比较,是否有更好的方法可以做这样的事情?如果经常检查keyup,我不希望浏览器崩溃。

我的HTML:

<input title="input 1" type="tel" class="input1" value="" maxlength="3" />
<input title="input 2" type="tel" class="input2" value="" maxlength="3" />
<ul></ul>

我的JavaScript:

var input1 = '';
var input2 = '';
var input1Title = '';
var input2Title = '';

$("input").keyup(function () {
    input1 = parseInt($('.input1').val(), 10) || 0;
    input1Title = $('.input1').attr("title");
    input2 = parseInt($('.input2').val(), 10) || 0;
    input2Title = $('.input2').attr("title");

    if (input1 && input2) {
        var description = '';

        if (input1 > input2) {
            description = input1Title + ' is greater than ' + input2Title;
        } else if (input1 < input2) {
            description = input1Title + ' is less than ' + input2Title;
        } else {
            description = input1Title + ' is the same ' + input2Title;
        }

        $("ul").append("<li>" + description + "</li>");
    }
});

请参阅我的JSFiddle:http://jsfiddle.net/C5pgc/

2 个答案:

答案 0 :(得分:4)

如果字段为空,则强制值为0。然后你的条件检查input1 && input2,这将失败,因为在JS 0中等于false。当你将这些值强制为零时,你就不需要那种条件了。

$("input").keyup(function () {
    input1 = parseInt($('.input1').val(), 10) || 0;
    input1Title = $('.input1').attr("title");
    input2 = parseInt($('.input2').val(), 10) || 0;
    input2Title = $('.input2').attr("title");

    var result = '';
    if (input1 > input2) {
        result = ' is greater than ';
    } else if (input1 < input2) {
        result = ' is less than ';
    } else {
        result = ' is the same ';
    }
    $("ul").append("<li>" + input1Title + result + input2Title + "</li>");
});

Example fiddle

注意我也会干掉最后一部分。

答案 1 :(得分:0)

您可以尝试添加两个额外的if。一个询问input1是否等于0而input2大于0然后再次相反,反之亦然。