如何使文本输入不可编辑
在HTML文档中,<input>标签用于表示表单输入控件。在大多数情况下,输入标签用于在<form>元素内声明输入控件,允许用户输入数据。根据属性类型,输入字段可以有多种类型。
Input标签是一个仅包含属性的空元素。输入元素的标签可以使用<label>标签定义。通过设置合适的type属性,它可以用于表示文本字段、复选框、下拉列表、按钮和其他输入。value属性用于指定输入元素的初始值。
示例
以下代码是一个简单的文本输入示例。
<!DOCTYPE html> <html> <head> <title>Text input in HTML</title> </head> <body> <input type="text" value="This is the initial text"> </body> </html>
即使使用value属性已经指定了初始文本,它仍然可以被编辑。在本教程中,我们将讨论两种使输入元素文本不可编辑的方法。
使用“readonly”属性
在HTML中,<input>元素的只读属性指定输入字段为只读。当输入标记为只读时,其内容无法更改,但可以复制和突出显示。
只读属性可以用来防止用户更改值,直到满足某些条件(例如选择复选框等)。然后可以使用JavaScript删除readonly值并使输入字段可编辑。
示例
在这个例子中,我们在input元素内使用只读属性来使文本输入不可编辑。
<!DOCTYPE html> <html> <head> <title>How to Make the Text Input Non-Editable</title> <style> div{ width:500px; height:120px; padding:10px; margin:10px; background-color:lightgreen; } p{ color:white; font-size:20px; font-weight:bold; } </style> </head> <body> <div> <p>The text field contains non-editable text. However, the text can be copied or highlighted. </p> <input type="text" value="Non Editable Text" readonly> </div> </body> </html>
示例
在这个例子中,我们将使用JavaScript函数中的readonly属性,通过onclick事件使文本字段不可编辑。
<!DOCTYPE html> <html> <head> <title>How to Make the Text Input Non-Editable</title> <style> #sampleinput{ width:300px; margin-top:20px; } #btn1, #btn2{ width:110px; height:30px; border-radius:10px; background-color:lightsalmon; color:white; font-weight:bold; cursor:pointer; } #btn1:hover, #btn2:hover{ background-color:red; } div{ width:350px; height:120px; background-color:oldlace; padding:10px 15px 15px 20px; } </style> </head> <body> <div> <input type="text" id="sampleinput"/><br><br> <input type="button" id="btn1" value="Enable Editing" onclick="enableEdit()"/> <input type="button" id="btn2" value="Disable Editing" onclick="disableEdit()"/> </div> <script> function enableEdit () { var sampleinput = document.getElementById("sampleinput"); sampleinput.value = "The text can now be edited."; sampleinput.disabled = false; } function disableEdit () { var sampleinput= document.getElementById("sampleinput"); sampleinput.value = "This text is non-editable"; sampleinput.disabled = true; } </script> </body> </html>
使用CSS pointer-events属性
pointer-events属性控制HTML元素如何响应鼠标/触摸事件,包括CSS悬停/活动状态、JavaScript点击/轻触事件以及光标是否可见。它指定特定图形元素可能成为指针事件目标的条件(如果有)。
虽然pointer-events属性有十一个可能的值,但对于任何HTML元素,三个有效值为none、auto和inherit。
none: 用于停用点击目标,并允许元素定位该元素下方的任何内容。
auto: 默认值。表示元素必须响应指针。
inherit: 使用元素父级的pointer-event值。
示例
在下面的示例中,我们将pointer-event的值设置为none以停止指针事件,最终使文本字段不可编辑。
<!DOCTYPE html> <html> <head> <title>How to Make the Text Input Non-Editable</title> <style> body { text-align: center; background-color:whitesmoke; } .inputField { pointer-events: none; width:200px; } div{ width:450px; height:60px; margin:20px; padding:20px; background-color:lavenderblush; border:2px solid plum; } </style> </head> <body> <div> Non-Editable Text Field: <input class="inputField" name="input" value="Pointer event has been disabled"> <br><br> Non-Editable Text Field: <input class="inputField" name="input" value="Pointer event has been disabled"> </div> </body> </html>
示例
在这个示例中,我们将包含两个文本输入字段,并通过使用其类名或ID在特定输入字段中禁用pointer-event属性,只使其中一个不可编辑。
<!DOCTYPE html> <html> <head> <title>How to Make the Text Input Non-Editable</title> <style> body { text-align: center; background-color:whitesmoke; } .inputField2{ pointer-events: none; } input{ width:250px; } div{ width:450px; height:60px; margin:20px; padding:20px; background-color:beige; border:2px solid saddlebrown; } </style> </head> <body> <div> Editable Text Field: <input class="inputField1" name="input" value="Pointer event has not been disabled here."> <br><br> Non-Editable Text Field: <input class="inputField2" name="input" value="Pointer event has been disabled here."> </div> </body> </html>