jQuery Mobile:为什么onClick和onKeyPress事件不起作用?

时间:2013-05-29 16:07:00

标签: javascript jquery jquery-mobile onclick onkeypress

在我的jQuery Mobile代码中,我有一些onClick和onKeyPress事件,但它们没有触发。我正在将我客户的网站转换为包含大量JavaScript功能的移动版本。如果我将所有内容都转换为jQuery,我不知道它是否有效,但我不想这样做,并且希望保持javascript函数不变。

有没有办法完全使用javascript而不是jQuery?

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");
}

2 个答案:

答案 0 :(得分:2)

工作示例: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;
        }     
    });    
});

答案 1 :(得分:0)

标记中不应有e event。即javascript:keyPressEvent(event)

 <input class="inputField" id="textB" value="" type="text" onKeyPress="javascript:keyPressEvent(event);" onFocus="javascript:clearText(this);" value="This is default text B" />

另外 你的报价错了: -

function goButtonPress() {
  alert('Button Pressed"); <-- here quotes should match
}

Fiddle

请参阅events