Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery.focus()事件更改下拉选项_Javascript_Jquery_Html_Focus_Telerik - Fatal编程技术网

Javascript JQuery.focus()事件更改下拉选项

Javascript JQuery.focus()事件更改下拉选项,javascript,jquery,html,focus,telerik,Javascript,Jquery,Html,Focus,Telerik,我有一个selectlist,它是在网格中使用jquery构建的。当用户输入一个键时,选择列表就建立起来了,然后我调用click和focus,这样我就可以再次使用键命令 我遇到的问题是,焦点是在选择列表被激发时改变它的选择。以前是否有人经历过这种行为或找到了解决方法?提前谢谢 function INTEREST_createPaymentTypeDropDown() { //Interest specific: //build a dropdown for the enum

我有一个selectlist,它是在网格中使用jquery构建的。当用户输入一个键时,选择列表就建立起来了,然后我调用click和focus,这样我就可以再次使用键命令

我遇到的问题是,焦点是在选择列表被激发时改变它的选择。以前是否有人经历过这种行为或找到了解决方法?提前谢谢

function INTEREST_createPaymentTypeDropDown() {
    //Interest specific:
    //build a dropdown for the enum
    //if the PaymentType input exists
    if ($("#PaymentType").length > 0) {

        var cellPaymentTypeValue = $("#PaymentType").val();
        var selectedOption;

        $("#PaymentType").replaceWith("<select id='PaymentType' style='width:95px; height: 20px;' name='PaymentType'></select>");
        $.each(INTEREST_PAYMENT_TYPES, function(key, val) {
            var newoption = $("<option value=\"" + val + "\">" + key + "</option>");

            if (val == cellPaymentTypeValue || key == cellPaymentTypeValue) {
                //append select to the current value
                selectedOption = val;
            }
            $("#PaymentType").append(newoption);
            $("#PaymentType").addClass("t-input");
        });

        if (selectedOption != null) {
            $("#PaymentType").val(selectedOption.toString());
        }
    }


    function INTEREST_setEditField(field) {
        if ($("#PaymentType").length > 0) {
            // this is where the problem is
            $("#PaymentType").click();
        }
        else {
            $(".t-grid-content").find('.t-input').click();
            $(".t-grid-content").find('.t-input').select();
        }

        INTEREST_persistPaymentTypeOnCellChange(field);
    }

    function INTEREST_persistPaymentTypeOnCellChange(field) {
        //keep the value of the enum not the enum index
        //in the payment type field
        var paymentTypeCell = $(field).parent().children().eq(1);

        if ($(paymentTypeCell).html().length == 1) {
            $.each(INTEREST_PAYMENT_TYPES, function(key, val) {
                if ($(paymentTypeCell).html() == val) {
                    $(paymentTypeCell).html(key);
                }
            });
        }
    }

    $('td.t-grid-edit-cell', 'div#AccountPayments').live('keydown', function(event) {
        if (event.which == 39 || event.which == 9) //Tab or right arrow
        {
            if ($(this).hasClass('t-last')) {
                INTEREST_goToNextRow(this, event);
            }
            else {
                INTEREST_goToRight(this, event);
            }
        }
        else if (event.which == 37 || event.which == 9 && event.shiftKey) //left arrow. Todo: add shift tab
        {
            if ($(this).hasClass('t-first')) {
                INTEREST_goToPreviousRow(this, event);
            }
            else {
                INTEREST_goToLeft(this, event);
            }
        }
        else if (event.which == 40) //down arrow
        {
            INTEREST_goDown(this, event);
        }
        else if (event.which == 38) //up arrow
        {
            INTEREST_goUp(this, event);
        }
    });

    $("#PaymentType").live('click', function(event) {
        $(this).focus();
    });

是否列表顶部没有空选项,因此当调用单击时,会导致PaymentType自动选择第0个选项?

Hi有空选项,但默认为第一个选项,而不是第二个选项。当我从右侧或底部输入下拉列表时,它会从第一个值更改为第二个值,如果我从顶部输入,它会更改为第二个值。这可能与此行有关吗?如果val==cellPaymentTypeValue | | key==cellPaymentTypeValue{//append select to the current value selectedOption=val;}为什么代码会将key和val与同一个变量进行比较?它们是一样的吗?另外,焦点调用是否会发送一个您不一定期望的事件代码,并触发keydown事件或其他函数?另外,我假设没有为focus函数定义特殊的行为/函数。这些都是在黑暗中拍摄的,如果没有帮助,我很抱歉。嗨,杰森,谢谢你的回复。我将key和val与my变量进行比较的原因是,单元格中的值可能是字符串或整数。我很确定你对焦点的看法是对的,它似乎会关闭并调用其他事件,而这些事件又会调用焦点,这会改变selectlist selected Index,在我之前的焦点中也发生了一些奇怪的事情。我在设置焦点,它没有将光标放在字段中,但字段实际上有焦点。我首先模糊了视野,然后聚焦了视野,解决了这个问题。你可以试试看它是否有帮助???