使用setSelectionRange未定义jQuery TypeError

时间:2013-02-03 22:54:30

标签: jquery html

我试图在任何文本之后关注文本区域。这适用于IE和Chrome,但在Firefox中,它在文本之前启动。

以下错误的原因是什么:

TypeError: $(...)[0] is undefined
[Break On This Error]   

$(focus)[0].setSelectionRange($(focus).val().length, $(focus).val().length);

相关代码:

$(focus)[0].setSelectionRange($(focus).val().length, $(focus).val().length);
$(focus).focus();

整个jQuery代码:

<script src="//cdn.jsdelivr.net/jquery.cookie/1.3/jquery.cookie.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
    $("#state").change(function () {
    this.form.submit();
})
var focus = $.cookie("inputFocus");

$(focus)[0].setSelectionRange($(focus).val().length, $(focus).val().length);
$(focus).focus();

$("#supplier_name").val($("#supplier_name").val());
$("#aircraft_type").val($("#aircraft_type").val());
var typingTimer;                
var doneTypingInterval = 600;  

$('#supplier_name').keyup(function(){
    clearTimeout(typingTimer);
    if ($('#supplier_name').val) {
        typingTimer = setTimeout(doneTyping, doneTypingInterval);
    }
    $.cookie("inputFocus", "#supplier_name"); 
});

$('#aircraft_type').keyup(function(){
    clearTimeout(typingTimer);
    if ($('#aircraft_type').val) {
        typingTimer = setTimeout(doneTyping, doneTypingInterval);
    }
    $.cookie("inputFocus", "#aircraft_type"); });
function GetQueryStringParams(sParam)
{
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++)
    {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam)
        {
            return sParameterName[1];
        }
    }
}

var state = GetQueryStringParams('state');
var supplier_name = GetQueryStringParams('supplier_name');
var aircraft_type = GetQueryStringParams('aircraft_type');

    if(supplier_name === "" && state === "any" && aircraft_type === "") {
            $('#clear').attr('disabled','disabled');
    }
    $("#clear").click(function() {
    if(state === "any") {
        $("#aircraft_type").val("");
        $("#supplier_name").val("");
    } else {
        $('#state option:selected').remove();
        $("#aircraft_type").val("");
        $("#supplier_name").val("");    
    }
    });

function doneTyping () {
    $("form").submit();
}

});
</script>

1 个答案:

答案 0 :(得分:0)

更详细。

如果您尝试阅读的cookie不存在,$ .cookie将返回undefined。 作为Docs中的statet和“读取Cookies”

https://github.com/carhartl/jquery-cookie

$.cookie('not_existing'); // => undefined

抓住它
if(!focus) focus = "";