0

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

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 -> New Order 并请查看那里有什么问题。

4

3 回答 3

2

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

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

提琴手

于 2012-09-02T11:10:43.953 回答
0

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

$('#mats').focus();
于 2012-09-02T10:32:33.410 回答
-1

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

于 2012-09-02T10:54:55.387 回答