簡體   English   中英

當我按回車鍵時,我試圖阻止默認行為,但它不起作用

[英]I'm trying to prevent default behavior when I hit enter but it doesn't work

我有一個輸入文本來更新數據庫中的一個字段。 當我在鍵盤上按下 Enter 鍵時,我調用了一個執行更新的 php 頁面。 不幸的是,對於公司政策,我必須使用 IE。 有人告訴我,在 IE 中按回車鍵的默認行為是提交表單。

現在,這個輸入文本不是任何表單的一部分,所以我不知道可能提交什么。

這是它背后的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;
    }
}
};

您似乎在使用 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;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM