我有输入文本来更新数据库中的字段。当我按下键盘上的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;
}
}
};
答案 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;
});