无法使用$('input [name =“rate”]')聚焦文本框.focus();方法

时间:2012-09-02 10:19:39

标签: javascript jquery validation

朋友我在onblur上分配给<input type="text" name="rate" />事件的javascript函数中有以下代码。 #NewOrder是div,input[name=quantity]也是input type="text"。这两个输入元素都在#NewOrder div。

function addMaterial() {
    var qnty, rate;
    if (Number($('#NewOrder input[name=quantity]').val()) > 0) {
        qnty = Number($('#NewOrder input[name=quantity]').val())
    }

    else {
        alert('Invalid Quantity');
        $('#NewOrder input[name=quantity]').focus(); // ** Working
        return;
    }
    if ($('#NewOrder input[name=rate]').val().length == 0) {
        rate = 0;
    }
    else {
        if (!Number($('#NewOrder input[name=rate]').val() > 0)) {
            alert('Invaid Rate');     // ** Working
            alert($('#NewOrder input[name="rate"]').val()); // ** Working
            $('#NewOrder input[name="rate"]').focus();      // ** Not Working
            $('#NewOrder input[name="rate"]').trigger('focus'); // Also not Works
            return;
        }
        else
            rate = Number($('#NewOrder input[name=rate]').val());
    }
    var mat = getMaterialFromArray($('#mats').find(':selected').text());
    $('#mats').focus();
}

我出错的朋友..?我错过了什么.. ?? 这让我很恼火 虽然alert($('#NewOrder input[name="rate"]').val());表示实际值,但意味着使用jQuery选择控制 但$('#NewOrder input[name="rate"]').focus();$('#NewOrder input[name="rate"]').trigger('focus');都不起作用。

添加了实时版本链接
尝试访问http://a.bobdn.com使用'111'作为投资者编号,使用'abc'作为密码。然后导航到Material - &gt;新订单和pleeease看起来有什么问题。

3 个答案:

答案 0 :(得分:2)

Firefox中似乎是错误。在Chrome中,您的代码正常运行 要获得Firefox支持,您可以创建如下函数:

function setFocus(controlSelectorString) {
    setTimeout(function() {
        $(controlSelectorString).focus();
    }, 0);
}

Jsfiddle

答案 1 :(得分:0)

我认为你在该函数的最后一行调用焦点,并且每次调用该函数时都会调用它,这会覆盖你的函数 文本框的重点。

$('#mats').focus();

答案 2 :(得分:-1)

我已检查过您的code并注意到您有两个同名的文本框='Rate'。我认为这是问题所在。请更改名称并尝试一次。