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

can't focus a textbox using $('input[name="rate"]').focus(); method

本文关键字:方法 focus rate 文本 聚焦 name input      更新时间:2023-09-26

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

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"作为密码。然后导航到材料 ->新秩序,看看那里出了什么问题。

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

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

杰斯菲德尔

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

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

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