<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div id='container1'></div> <div id='formContainer'></div> </body> <script> //---------------------------------------Password function Password(parent, open) { let passField = document.createElement("input"); passField.placeholder = "введите пароль"; let checkBox = document.createElement("input"); checkBox.setAttribute("type", "checkbox"); parent.append(passField, checkBox); this.setValue = (newValue) => { passField.value = newValue; }; this.getValue = () => passField.value; this.setOpen = (newOpen) => { open = newOpen; if (open === true) { checkBox.setAttribute("checked", "true"); passField.setAttribute("type", "text"); } else if (open === false) { checkBox.setAttribute("checked", "false"); passField.setAttribute("type", "password"); } }; this.setOpen(open); this.getOpen = () => checkBox.checked; passField.oninput = () => { if (typeof this.onChange === "function") { this.onChange(this.getValue()); } }; checkBox.oninput = () => { if (this.getOpen() === true) { this.setOpen(true); } else { this.setOpen(false); } if (typeof this.onOpenChange === "function") { this.onOpenChange(this.getOpen()); } }; } // let p = new Password(document.body, true); // p.onchange = (data) => console.log(data); // p.onopenchange = (open) => console.log(open); // p.setValue("qwerty"); // console.log(p.getValue()); // p.setOpen(false); // console.log(p.getOpen()); // //---------------------------------------LoginForm // let passwordInput = new Password(document.body, true) // let loginInput = document.createElement('input') // let loginButton = document.createElement('input') // loginInput.placeholder = 'введите логин' // loginButton.type = 'button' // loginButton.value = 'Войти' // loginButton.disabled = true // loginInput.setAttribute('oninput','f()') // formContainer.append(loginInput,loginButton) // passwordInput.onChange = data => console.log(data) // function f(){ // if ((loginInput.value === '' ) || (passwordInput.getValue() === '')) { // loginButton.disabled=true // } else // loginButton.disabled=false // } // passwordInput.onChange = f // //---------------------------------------LoginForm constructor // function Login(parent) { // this.parent = parent; // let login = document.createElement('input') // login.placeholder = 'введите логин' // let button = document.createElement('button') // button.innerText = 'Войти' // button.disabled = true // let password = new Password(this.parent, true); // parent.append(login,button) // this.setActive = (value) => { // if (value === true) { // button.disabled = true; // } else { // button.disabled = false; // } // } // this.getPassword = () => { // return this.passwordInput // } // password.onChange = (data) => { // if(login.value === '' || data === '' ) { // this.setActive(true) // } else { // this.setActive(false) // } // } // login.oninput = () => { // login.innerHTML = login.value; // console.log(login.value) // if(login.value === '') { // this.setActive(true) // } else { // this.setActive(false) // } // } // } // let login = new Login(formContainer) //---------------------------------------Password verify let p = new Password(formContainer, true) let p2 = document.createElement('input') p2.type = 'password' p2.style.display = 'none' p2.placeholder = 'повторите пароль' p2.setAttribute('oninput','f()') let button = document.createElement('button') button.innerText = 'Войти' button.disabled = true p.onChange = data => console.log(data) formContainer.append(p2,button) function f () { if (p.getOpen() === true) { p2.style.display = 'none' if (p.getValue() != '') { button.disabled = false } else {button.disabled = true} } else { if (p.getValue() != '' && (p.getValue() === p2.value)) { button.disabled = false } else {button.disabled = true} p2.style.display = ''} } p.onOpenChange = f p.onChange = f console.log(p.getValue()) </script> </body> </html>