Jquery有一个奇怪的bug

时间:2013-02-06 23:02:53

标签: jquery

我正在尝试使用返回键作为tab键,但它可以用于表。这是fiddle

我不确定当我移除桌子并使用<br />它完美无缺时,导致它无法正常工作。它也适用于jQuery计算器功能。认为这导致了问题,但事实并非如此。我不确定我是否要求jQuery做一些更好的库。

HTML

<table border="1">
    <tr>
        <td id="larger">field 1</td>
        <td>
            <input type="text" id="sum1" name="sum1" class="sum" size="15" border="0"
            />
        </td>
        <td>
            <input type="text" id="sum2" name="sum2" class="ttw" size="15" />
        </td>
        <td>
            <input name="cash" type="text" class="cash" id="cash1" value="" size="15"
            />
        </td>
    </tr>
</table>

的jQuery

$('table:input').keydown(function (event) {
    if (event.which == 13) {
        if (!$(this).hasClass("last")) {
            event.preventDefault();
            $(this).nextAll('input:first').focus();
        } else {
            $("form").submit();
        }
    }
});
$(function () {
    $('input[name^=sum]').keyup(function () {
        var sum1 = parseFloat($('input[name=sum1]').val(), 2) || 0; // Or parseInt if integers only
        var sum2 = parseFloat($('input[name=sum2]').val(), 2) || 0;
        $('#cash1').val(sum1 + sum2);
    });
});
$(function () {
    $('input#cash1').blur(function () {
        var amt = parseFloat(this.value, 2) || 0;
        $(this).val('' + amt.toFixed(2));
    });
});

3 个答案:

答案 0 :(得分:1)

您可以执行http://jsfiddle.net/Beyq7/6/

之类的操作

$(this).parent().next().children('input:first').focus();

答案 1 :(得分:0)

您查找下一个输入的选择器是错误的...请尝试以下http://jsfiddle.net/Beyq7/4/

 $(this).parent().next().find('input').focus();

此外,绑定按键事件时,您没有正确定位输入,请使用:

$('table input')

答案 2 :(得分:0)

这是我的解决方案。您需要更新标记,以便最后一个输入具有类last,并将keydown的选择器更改为td input。然后,您的选择器获取下一个输入可能看起来像$(this).parent().next().find('input').focus();

这应该有效。

JS小提琴http://jsfiddle.net/bFRnf/