在web前端開發中,輸入框是一個基本元件,用於使用者輸入文字,數字和其他形式的資料。在本篇文章中,我們將探討web前端如何實作輸入框。
首先,我們需要使用HTML標記來定義輸入框。在HTML中,常用的標記包括<input>
,<textarea>
和<form>
等等。
<input>
標記用於建立單行輸入框,例如:
<label for="username">用户名:</label> <input type="text" id="username" name="username">
上面的前兩行程式碼中,<label>
標記用於為輸入框添加描述,for
屬性的值應該和<input>
標記的id##屬性值相同。這樣在使用者點選標籤時,輸入框就會獲得焦點。在第三行程式碼中,
type屬性的值為"text",表示我們建立的是一個文字輸入框。
<textarea>標記用於建立多行輸入框,例如:
<label for="comments">留言:</label> <textarea id="comments" name="comments"></textarea>
<input>標記,
<textarea>標記的可編輯區域較大,可以在其中容納多行文字。同樣可以新增描述標籤,提供使用者更好的操作體驗。
<form>標籤是一個容器,包含了一組輸入項目和一個提交按鈕。例如:
<form action="login.php" method="post"> <label for="username">用户名:</label> <input type="text" id="username" name="username"> <label for="password">密码:</label> <input type="password" id="password" name="password"> <button type="submit">登录</button> </form>
<form>標記的
action和
method屬性用於指定提交的URL和方法。
input[type="text"], textarea { box-sizing: border-box; width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 4px; resize: none; }
box-sizing屬性用於控制輸入框的尺寸,
padding屬性用於控制內邊距,
border屬性用於控制邊框樣式,
border-radius屬性用於控制邊框圓角度數,
resize 屬性用於控制輸入框是否可以調整大小。
input[type="text"]:focus, textarea:focus { border-color: #666; outline: none; box-shadow: 0 0 10px #ccc; }
const usernameInput = document.querySelector('#username'); const passwordInput = document.querySelector('#password'); usernameInput.addEventListener('input', () => { const value = usernameInput.value.trim(); if (value === '') { usernameInput.setCustomValidity('用户名不能为空!'); } else { usernameInput.setCustomValidity(''); } usernameInput.reportValidity(); }); passwordInput.addEventListener('input', () => { const value = passwordInput.value; if (value.length < 6 || value.length > 12) { passwordInput.setCustomValidity('密码长度必须在6-12个字符之间!'); } else { passwordInput.setCustomValidity(''); } passwordInput.reportValidity(); });
EventTarget.addEventListener()方法,來為輸入框新增了一個輸入事件的監聽器。每當使用者在輸入框中輸入內容時,就會觸發這個監聽器,我們可以在其中進行一些驗證操作,例如檢查輸入是否為空、長度是否符合要求等等。使用
setCustomValidity()方法來設定自訂提示訊息,使用
reportValidity()方法來彈出提示框。
const searchBox = document.querySelector('#search-box'); const searchResults = document.querySelector('#search-results'); searchBox.addEventListener('input', () => { const value = searchBox.value.trim(); if (value === '') { searchResults.innerHTML = ''; return; } // 发送搜索请求 fetch(`/api/search?q=${value}`) .then(response => response.json()) .then(results => { // 展示搜索结果 searchResults.innerHTML = ''; for (let i = 0; i < results.length; i++) { const item = document.createElement('li'); item.textContent = results[i].title; searchResults.appendChild(item); } }) .catch(err => { console.error(err); searchResults.innerHTML = '搜索失败!'; }); });
以上是web前端如何做輸入框的詳細內容。更多資訊請關注PHP中文網其他相關文章!