在iPad上不工作但在iPhone上工作时的DOM操作



有人就这个主题提出了几个问题,但没有人回答这个问题。

基本上,对于我正在开发的这个应用程序。当用户注册时,用户必须在一个<input>字段中输入密码,然后在另一个输入字段中重新键入。

我使用JavaScriptDOM操作来做两件事:

  1. 如果确认的密码与初始密码不同,则提醒用户
  2. 当密码相同时,将按钮的禁用属性从false更改为true

为此,我在用户确认密码的输入字段中添加了一个事件侦听器。在这个事件侦听器中,有一个条件语句用于评估两个密码字段是否相同。此事件侦听器可在我的Chrome浏览器和iPhone 6 Safari浏览器上使用oninputonkeyup。它在我的iPad Safari浏览器上不起作用(我认为这是一个旧版本(。

const password2 = document.getElementById("password2");
const password = document.getElementById("password");
password2.addEventListener("keyup", () => {
if (password2.value === password.value) {
document.getElementById("registerButton").className = "btn btn-success w-100 submit-button"
document.getElementById("registerButton").disabled = false;
document.getElementsByClassName("showAlert")[0].setAttribute("class", "hideAlert");
} else {
document.getElementById("registerButton").className = "btn btn-secondary w-100 submit-button disabled"
document.getElementById("registerButton").disabled = true;
document.getElementsByClassName("hideAlert")[0].setAttribute("class", "showAlert");
}
});

首先,对于这个问题,我应该使用什么事件监听器(如果有的话(?如果没有,我还应该寻找其他途径?

最后,有没有更好的写法?看起来有点笨重而且不业余。

谢谢!

请参阅iOS 9-keyup事件未启动

对于触摸屏设备,通常keypress工作得更频繁,但有人建议在keyupkeypress中添加相同的功能,但如果它对您有效,keydown应该可以,所以

const password2 = document.getElementById("password2");
const password = document.getElementById("password");
password2.addEventListener("keyup", eventify);
password2.addEventListener("keypress", eventify);
//OR simply
password2.addEventListener("keydown", eventify);

函数eventy(({if(password2.value==password.value({document.getElementById("registerButton"(.className=";btn-btn-successw-100提交按钮";document.getElementById("registerButton"(.disabled=false;document.getElementsByClassName("showAlert"([0]。setAttribute("class","hideAlert"(;}其他{document.getElementById("registerButton"(.className=";btn-btn-secondary w-100提交按钮被禁用";document.getElementById("registerButton"(.disabled=true;document.getElementsByClassName("hideAlert"([0]。setAttribute("class","showAlert"(;}}