2012-02-16 47 views
1

我有機器人與iScroll一個問題(2.2/2.3和IOS)iscroll4防止鍵盤顯示器上焦點上一個外部輸入(機器人/ IOS)

我有看起來類似的代碼:

<input id = "thing" val=""/> 
    <div id="scroller" style="overflow:auto; height:150px;"> 
     <ul> 
      <li><a class="thing">thing</a></li> 
      <li><a class="thing">thing</a></li> 
      <li><a class="thing">thing</a></li> 
      <li><a class="thing">thing</a></li> 
      <li><a class="thing">thing</a></li> 
      <li><a class="thing">thing</a></li> 
      <li><a class="thing">thing</a></li> 
      <li><a class="thing">thing</a></li> 
      <li><a class="thing">thing</a></li> 
      <li><a class="thing">thing</a></li> 
     </ul> 
    </div> 
    <a class="thing">thing</a> 

和JS:

$(document).ready(function(e) { 
    var testScroll = new iScroll('scroller', {vScrollbar: false}); 
    $('a.thing').on('click', function(){$('#thing').focus();}); 
}; 

當我點擊獨行鏈接,我給出#thing輸入焦點和軟鍵盤出現。 當我點擊滾動條中的那些時,給出了焦點,但鍵盤沒有出現。

我真的不明白什麼在這裏不起作用。我想讓鍵盤出現。

編輯:我使用jQuery的手機,如果這可以幫助我。告訴

回答

0

嘗試,如果目標是一個輸入元素,修改iscroll.js的「_start」功能:

_start: function (e) { 
    var that = this, 
    point = hasTouch ? e.changedTouches[0] : e, 
    matrix; 

    that.moved = false; 

    if (e.target.tagName == "SELECT" || e.target.tagName == "INPUT" 
     || e.target.tagName == "BUTTON" || e.target.tagName == "TEXTAREA") { 
     return true; 
    } 

    e.preventDefault(); 

    // more codes here 

} 
+0

目標是鏈接在這裏,但是,是蒙山「onBeforeScrollStart:功能(E ){if(target.tagName!='A')e.preventDefault();}「,它的工作原理。但我對這種伎倆並不滿意。 – Ernoriel 2012-02-16 13:12:00

+0

我認爲這是一個iScroll的錯誤,如果iScroll在觸摸開始時阻止所有默認事件,它必須導致一些奇怪的事情。 – Kevin 2012-02-16 13:37:12

+0

是啊......我不明白的是爲什麼點擊和焦點事件被解僱但沒有完成。我會花一點時間深入瞭解代碼。編輯:我忘了e。在我的編輯目標之前:「onBeforeScrollStart:function(e){if(e.target.tagName!='A')e.preventDefault();}」 – Ernoriel 2012-02-16 13:43:19

相關問題