1

跨浏览器有问题。我需要支持 IE7-9,我的网站设置为 IE7 标准 - 无法更改。然后我需要支持最新的 chrome、safari 和 firefox。

我想在输入时在文本框中点击一个 keyup 事件。问题是我在该页面上的表单中添加了一个按键事件,该事件正在提交我不想发生的表单。示例应用程序将是这样的。

JAVASCRIPT:

$(document).ready(function () {

        $("form").bind("keypress", function (e) {
            var code = (e.keyCode ? e.keyCode : e.which);
            if (code == 13) {
                $("#log1").append("Key press - Form event");
            }                
        });

        $("#myInput1").bind("keypress", function (e) {
            var code = (e.keyCode ? e.keyCode : e.which);
            if (code != 13) {
                return true;
            }

            $("#log2").append("Enter pressed - input event");

            //if (!e) var e = window.event;

            e.cancelBubble = true;
            e.returnValue = false;

            if (e.stopPropagation) {
                e.stopPropagation();
                //e.preventDefault();
            }

        });

        $("#myInput1").bind("keyup", function (e) {
            var code = (e.keyCode ? e.keyCode : e.which);
            if (code != 13) {
                return true;
            }

            $("#log1").append("Key up - Enter pressed - input event");
        });


    });​

HTML

<li onkeypress="alert('hi')">
            <input id="myInput1" type="text" />
            <div id="log1"></div>
            <div id="log2"></div>
        </li>

如果我使用 e.preventDefault() - keyup 事件未命中,如果我不使用它,页面将回发。

我想在所有浏览器中看到“按键 - 按下 Enter - 输入事件”在按下 Enter 时写入屏幕。

任何帮助,将不胜感激。谢谢你。

4

1 回答 1

1

终于可以这样做了:

$(document).ready(function () {
        $("form").bind("keypress", function (e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 13) {
            $("#log1").append("Key press - Form event");
        }                
    });


        $("#myInput1").bind("keypress", function (e) {
            var code = (e.keyCode ? e.keyCode : e.which);
            if (e.keyCode != 13) {
                return true;
            }

            $("#log2").append("Enter pressed - input event");


            e.stopPropagation();
            sampleE = e.keyCode;
           $("#myInput1").trigger("keyup");
           return false;
        });

        $("#myInput1").bind("keyup", function (e) {
            if (!e.keyCode)
                e.keyCode = sampleE;
            if (e.keyCode != 13) {
                return true;
            }

            $("#log1").append("Key up - Enter pressed - input event");
        });


    });
    var sampleE = null;

我知道这不是最好的选择,但这是有效的。谢谢大家。

于 2012-10-05T09:12:33.447 回答