javascript - 如果您尝试编辑,光标会跳到字段末尾

标签 javascript html css safari

这只发生在 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>

最佳答案

您的代码中存在不少语法错误,主要是 if 语句中缺少左/右括号。另外,您的一个功能缺少右括号。如果您不确定 js 语法,您可以使用在线语法检查器来仔细检查您的 js 语法。

在此片段中,在“返回”/按下回车键时,会出现一条关于未捕获引用的简短消息,因为没有共享“.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>

关于javascript - 如果您尝试编辑,光标会跳到字段末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55850414/

相关文章:

javascript - 如何检测 ASP.NET AJAX 控件内部元素的变化?

javascript - 谷歌地图调整大小不起作用

html - div 在另一个 div 的边缘, float div

html - 在 HTML 易趣列表中使用动态标签

css - 停止包装包含的 div?

javascript - 如何在 React Native 中按百分比定义宽度?

javascript - 如何检查它是字符串还是json

javascript - 如何按顺序获取所有元素文本

javascript - 如何使用 JjavaScript 和 MVC 在一个文本框中插入多个数据?

javascript - 需要表明图像复制保护不值得的研究、证明或研究