1

我需要在我的 Web 应用程序中使用一些快捷方式,这与用户单击按钮或使用 accesskey 按下按钮时的作用相同。

我简化了代码以向您展示我的问题:

<html>
<head><script src="jquery-1.4.2.js" type="text/javascript"></script></head>
<form>
    <body>
        <div id="myDiv">text</div>
        <input name="cmdChangeText" type="submit" value="change text" onclick="document.getElementById('myDiv').innerText='text is changed'; return false;" />

        <input name="cmdTestButton" type="submit" value="hello" onclick="alert('hello'); return false;" accesskey='z' />
    </body>
</form>
<script type="text/javascript">
    document.onkeydown = function() {
        if (event.keyCode == 83) { //83 = 's'
            window.$('[accesskey=z]').click();
        }
    }
</script>
</html>

第一个按钮更改文本。当您点击第二个按钮,或者通过 accesskey( IE 中的Alt+ Z)点击它时,您会收到警报,但页面不会重新加载:文本仍然更改!

当我按下某个按钮时,S在这个例子中,我确实收到了警报,但是页面被重新加载了!为什么以return false;这种方式被忽略,我该怎么办?

4

2 回答 2

3

我会摆脱这些onclick="alert('hello'); return false"东西并使用 jQuery 附加事件。

之后,您可以尝试取消事件冒泡:

$('#myInput2').click(
    function() {
        alert('hello')
        return false
    }
 )

只是一种预感。

于 2011-01-18T10:06:16.523 回答
0

给按钮起不同的名字,在这个例子中,我使用了“test1”和“test2”并添加了以下代码。

$('input[name=test1]').click( function(e){
    e.preventDefault();
    $('#myDiv').innerText('text is changed');
});

$('input[name=test2]').click( function(e){
    e.preventDefault();
    alert('hello');
});

默认情况下,“提交”类型的输入将提交页面。在事件上使用“preventDefault()”方法将毫无疑问地阻止默认操作。如果您希望页面重新加载,只需删除此行。

于 2011-01-18T10:12:41.663 回答