这仅在Safari中发生。我有一个用于电子邮件的简单文本字段。如果输入了一些文本,则将光标移到几个空格上进行编辑并输入更多内容,一旦开始键入,它将光标置于末尾并在其中放置新字符。似乎是这段代码引起了问题。
function clearErrors() {
var authError = document.getElementById("authError");
var error = document.getElementById("error");
if (authError !== null) {
document.getElementById("authError").innerHTML = "";
}
if (error !== null) {
document.getElementById("error").innerHTML = "";
}
function postOnReturn(e) {
document.forms[0]['pf.username'].value = document.forms[0]
['pf.username'].value.trim();
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;
if (keycode == 13) {
if ($isCustomerInternal == 'false')
if ($("#username").val().indexOf("@") === -1) {
document.querySelector('.emailError').style.display = 'block';
return;
}
else if ($("#username").val().indexOf("@") !== -1) {
document.querySelector('.emailError').style.display = 'none';
}
end
disableFields();
document.forms[0].submit();
return false;
} else {
return true;
}
}
<input id="username" name="pf.username" type="text" class="form-control
card-input" value="$username" autocorrect="off" autocapitalize="off" onKeyPress="clearErrors();return postOnReturn(event)" autofocus>
答案 0 :(得分:0)
您的代码中有很多语法错误,主要是if语句中缺少左/右括号。您的功能之一也缺少右括号。如果不确定js语法,以后可以使用在线语法检查器来仔细检查js语法。
在此代码段中的“返回” /按Enter时,由于未共享“ .emailError”代码,因此会出现一条简短的消息,提示未捕获的引用。这将解决此问题。如果您的代码正确,则您描述的问题可能会得到解决。没有更多代码,我无法重现您的问题,但我希望这会有所帮助。
function clearErrors() {
var authError = document.getElementById("authError");
var error = document.getElementById("error");
if (authError !== null) {
document.getElementById("authError").innerHTML = "";
}
if (error !== null) {
document.getElementById("error").innerHTML = "";
}
}
function postOnReturn(e) {
var keycode;
document.forms[0]['pf.username'].value = document.forms[0]
['pf.username'].value.trim();
if (window.event) {
keycode = window.event.keyCode;
} else if (e) {
keycode = e.which;
} else {
return true;
}
if (keycode == 13) {
if ($isCustomerInternal == 'false') {
if ($("#username").val().indexOf("@") === -1) {
document.querySelector('.emailError').style.display = 'block';
return;
}
} else if ($("#username").val().indexOf("@") !== -1) {
document.querySelector('.emailError').style.display = 'none';
end
disableFields();
document.forms[0].submit();
return false;
} else {
return true;
}
}
}
<form>
<input id="username" name="pf.username" type="text" class="form-control
card-input" value="$username" autocorrect="off" autocapitalize="off" onKeyPress="clearErrors();return postOnReturn(event)" autofocus>
</form>