2013-02-03 2 views
0

텍스트 뒤에 포커스를두고 있습니다. 이것은 IE와 크롬에서 작동하지만 파이어 폭스에서는 텍스트보다 먼저 시작됩니다.setSelectionRange로 jQuery TypeError를 정의하지 않았습니다.

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> 
+2

쿠키가 설정되지 않을 수와

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

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

캐치를 "쿠키를 읽기"로 아직 – Alexander

+0

그것은 (경우 수 shoudn't ... val()), paranthesis. 그 외에도 $ (focus) [0] .selectionStart = $ (focus) [0] .selectionEnd = $ (focus) .val(). 길이를 시도하십시오. –

+0

"(... val())"이 무엇을 의미합니까? 난 당신의 코드를 시도하고 다음과 같은 오류가 밖으로 뱉어 : 형식 오류 :. $ (...)를 발 (...)이 \t $ (초점) [0 [이 오류에 브레이크] 정의되지 ] .selectionStart = $ (focus) [0] .selectionEnd = $ (focus) .val(). 길이; – sephiith

답변

0

다음과 같은 오류의 원인이 무엇

.

읽으려고하는 쿠키가 존재하지 않으면 $ .cookie는 정의되지 않은 값을 반환합니다. , 스프레드 statet가 싶게

if(!focus) focus = ""; 
관련 문제