1

私の jQuery Mobile コードには、いくつかの onClick および onKeyPress イベントがありますが、起動していません。クライアントのウェブサイトを、多くの JavaScript 機能を含むモバイル バージョンに変換しています。すべてをjQueryに変換してもうまくいくかどうかはわかりませんが、そうしない方が好きで、javascript関数をそのままにしておきたいです。

jQueryではなくjavascriptでこれを完全に機能させる方法はありますか?

onClick="javascript:alert('test');"うまくいくようです。呼び出されていないのは関数だけです。

http://jsfiddle.net/jetlag/CtkTV/1/

HTML:

<div data-role="fieldcontain">
  <label for="textA">Input A</label>
  <input class="inputField" id="textA" value="" type="text" onFocus="javascript:clearText(this);" value="This is default text A" />
</div>
<div data-role="fieldcontain">
  <label for="textB">Input B</label>
  <input class="inputField" id="textB" value="" type="text" onKeyPress="javascript:keyPressEvent(e);" onFocus="javascript:clearText(this);" value="This is default text B" />
 </div>
 <div class="ui-grid-b">
   <div class="ui-block-a"><input type="button" id="goButton" onClick="javascript:goButtonPress();" value="Go" />
   </div>
   <div class="ui-block-b"><input type="button" id="testButton" onClick="javascript:alert('Alerted!');" value="Alert" />
   </div>
</div>

Javascript:

function keyPressEvent(e) {
  var evt = e || window.event;
  var keyPressed = evt.which || evt.keyCode;
  if (keyPressed == 13) {
    document.getElementById('goButton').click();
    evt.cancel = true;
  }
}

function goButtonPress() {
  alert('Button Pressed");
}
4

2 に答える 2

0

作業例: http://jsfiddle.net/Gajotres/aLB6T/

インライン Java スクリプトに問題はありませんが、jQuery Mobile を使用する場合は使用しないでください。そのアーキテクチャのため、大きな問題を引き起こす可能性があります。そのため、可能であれば従来の jQuery を使用してください。

$(document).on('pagebeforeshow', '#index', function(){ 
    $(document).on('click', '#testButton', function(){ 
        alert('Alerted!');       
    });

    $(document).on('click', '#goButton', function(){ 
        alert('Button Pressed');      
    });        

    $(document).on('keypress', '#textB, #textA', function(evt){ 
        var keyPressed = evt.which || evt.keyCode;
        alert(keyPressed);
        if (keyPressed == 13) {
            document.getElementById('goButton').click();
            evt.cancel = true;
        }     
    });    
});
于 2013-05-29T16:17:20.990 に答える