我试图防止在我按下Enter键时出现默认行为,但它不起作用

时间:2019-06-26 14:19:05

标签: javascript

我有输入文本来更新数据库中的字段。当我按下键盘上的Enter键时,我会调用一个进行更新的php页面。不幸的是,对于公司政策,我必须使用IE。有人告诉我,IE中按Enter的默认行为是提交表单。

现在,此输入文本不是任何形式的一部分,所以我不知道可以提交什么内容。

这是其背后的JavaScript。我在做什么错了?

如您所见,设置好要发送的参数后,我会用该参数提醒字符串,当我这样做时,刚更改的值将使用旧值。

function submitData(id, tab, codProd, riga, R004) {
    document.querySelector("#" + id).onkeydown = function(event) {
        if(event.key == "Enter") { 
            event.preventDefault ? event.preventDefault() : (event.returnValue = false);
            var esito = confirm("Sei sicuro di voler modificare il dato?"); 
            if(esito) {
                if('ActiveXObject' in window){
                    infoXmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
                }else{
                    infoXmlHttp = new XMLHttpRequest();
                }
                if(infoXmlHttp) {
                    try{
                        infoXmlHttp.onreadystatechange = function() {
                            if(this.readyState == 4 && this.status == 200) {
                                if(this.responseText == 1) {
                                    document.getElementById(id).readOnly = true;
                                    window.location.reload();
                                }
                                else {
                                    document.getElementById(id).value = riga;
                                    document.getElementById(id).readOnly = true;
                                    window.location.reload();
                                }
                            }
                        };
                        infoXmlHttp.open("POST", serverAddress, false);
                        infoXmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                        var val = $('#'+id).val();
                        var param = "codProd=" + codProd + "&tab=" + tab + "&key=" + id + "&value=" + val + "&R004=" + R004;
                        alert(param);
                        infoXmlHttp.send(param);
                    } catch(e) {
                        var log = "Error connecting to the server - submitData";
                        alert(log);
                }
            }
        }
        else {
            document.getElementById(id).value = riga;
            document.getElementById(id).readOnly = true;
            window.location.reload();
        }
    }
    else {
        return;
    }
}
};

1 个答案:

答案 0 :(得分:0)

您似乎正在使用jQuery,所以这是我倾向于通过按Enter键停止提交表单的方式。

应将其放置在文档就绪功能内

/* Prevent form from being submitted if a user presses enter whilst focused on an input field */
var inputs = $('input, textarea, select').not(':input[type=button], :input[type=submit], :input[type=reset]');
$(inputs).on('keypress', function(e) {
    return e.which !== 13;
});