2014-04-28 4 views
0

내 js 파일에 다음과 같은 기능이 있습니다. - 버튼의 기능을 호출하려했으나 IE8에서 작동하지 않습니다 (엔진이 정의되지 않음). , FF로, 크롬은 그것을 잘 작동합니다 : HTML :ie8 입력에 대한 호출 기능이 작동하지 않습니다.

<button onclick="javascript:Engine.search.globalSearch(window.event);" type="button" class="btn btn-default">Søg</button> 

JS :

jQuery(function ($) { 

var $w = $(window), 
    $body = $('body'), 
    resizeTimer, 
    tablePx = 768, 
    desktopPx = 992, 
    winWidth = $w.width(); 
Engine = { 

    search: { 
     setupSearch: function() { 
      // Add eventlistener for search-submit on Enter keydown 
      $("#q").keydown(function (event) { 
       if (event.which === 13) { 
        return Engine.search.submitSearch(); 
       } 
      }); 

      // Datepicker settings 
      // adding datepicker to date fields from the ASK local Search resume 
      // Setting op opensourse Bootstrap datepicker 
      $('input.addDatePicker').datepicker({ 
       format: 'dd.mm.yy' 
      }); 
     }, 
     globalSearch: function (event) { 
      if (event.type === 'click' || event.keyCode === 13 || event.which === 13) { 

       // (IE-fix) Prevent default form-submit on Enter-press 
       event.preventDefault(); 
       event.cancelBubble = true; 

       // Get search-field and placeholder-tekst 
       var searchFld = document.getElementById("globalsearch"); 
       var ph = searchFld.getAttribute("placeholder"); 
       if (searchFld.value !== "" && searchFld.value !== ph) { 
        // Get sites-searchpage url, combine it with the searchword and open that url. 
        var searchUrl = searchFld.getAttribute("data-searchUrl"); 
        var tmpUrl = searchUrl + "?q=" + searchFld.value; 
        window.location = tmpUrl; 
       } 
       else { 
        return false; 
       } 
      } 
     }, 
     autoSumitSearch: function() { 
      // Submit search if autoSubmit is setup to true by editor (requires variable defined on SC page) 
      if (autoSubmit === true) { 
       Engine.search.submitSearch(); 
      } 
     }, 
     submitSearch: function() { 
      // Create outer form with search criteria, to be able to submit it outside Sitecores global form-element 
      var $ = jQuery; 
      var winLoc = String(window.location.href).replace(/[?&]page[=][^&#]?/, ""); 
      var form = '<form style="display: none;" method="get" action="' + window.location.href + '">' + 
       '<input name="q" value="' + $("#q").val() + '">' + 
       //'<input name="page" value="' + $("#page").val() + '">' + 
       '<input name="ps" value="' + $("#ps").val() + '">' + 
       (($("#categ").length > 0) ? '<input name="categ" value="' + $("#categ").val() + '">' : '') + 
       (($("#c").length > 0) ? '<input name="c" value="' + $("#c").val() + '">' : '') + 
       (($("#ddlCategories").length > 0) ? '<input name="cat" value="' + $("#ddlCategories").val() + '">' : '') + 
       (($("#ddlSiteSections").length > 0) ? '<input name="ss" value="' + $("#ddlSiteSections").val() + '">' : '') + 
       (($("#df").length > 0) ? '<input name="df" value="' + $("#df").val() + '">' : '') + 
       (($("#dt").length > 0) ? '<input name="dt" value="' + $("#dt").val() + '">' : '') + 
       '</form>'; 

      var $form = $(form).appendTo("body"); 

      setTimeout(function() { $form.submit().remove(); }, 0); 

      return false; 
     } 
    }, 
}; 
// Initialize main script-Engine; 
Engine.init(); 
}); 
+1

'엔진'은'var'에 의해 정의되지 않습니다 ... –

+0

@ pc-shooter 생략하면 글로벌이됩니다. 나는 그것이 추한 것을 안다. – A1rPun

답변

0

아마, 그것은 단지 때문에, 따라서 그 기능의 범위에 바인딩 함수의 내부에 사용 Engine에 있습니다. 먼저 엔진을 전역 적으로 선언하십시오.

$("button.your-button").click(Engine.search.globalSearch); 

사용

var Engine; 

또는 함수의 onclick 핸들러를 연결을 사용하여 첫 번째 줄에이은으로 호출 방법에 선언 된 이벤트 핸들러와 인라인의 onclick 핸들러를 사용에서 발생 가능한 충돌을 다루 것 DOMReady 이벤트의 늦은 시각.

관련 문제