【发布时间】:2021-06-03 14:30:58
【问题描述】:
有时input 元素会在视觉上显示它们的值,但是这些值不会显示在元素 HTML 中。不是“文本”,也不是“值”属性。喜欢here
实际上,它是一个value 属性,但它是隐藏的。
我的意思是即使value 属性本身的存在也是隐藏的。
我想知道为什么那些value 属性被隐藏了?
【问题讨论】:
有时input 元素会在视觉上显示它们的值,但是这些值不会显示在元素 HTML 中。不是“文本”,也不是“值”属性。喜欢here
实际上,它是一个value 属性,但它是隐藏的。
我的意思是即使value 属性本身的存在也是隐藏的。
我想知道为什么那些value 属性被隐藏了?
【问题讨论】:
在前端开发方面,我相信有几种方法可以确保value 保持为空,同时元素仍显示来自DOMString 的用户输入。例如,来自this HTML documentation
input 和 textarea 元素有一个脏值标志。这用于跟踪值和默认值之间的交互。如果为 false,则 value 反映默认值。如果为真,则忽略默认值。
因此,如果默认值为空,并且设置了此 dirty value flag,则无论用户输入如何,value 属性都将保持为空。
【讨论】:
<button> , <input> and <option>元素,value属性指定元素的初始值。这就是为什么 HTML 中没有显示输入元素“值”属性的原因?
【讨论】:
我们需要了解value属性是什么?
一般来说,value属性指定<input> element的值。
假设button - 它定义了button 上的text。
对于password input 字段,它必须是hidden。
因此,对于任何sensitive field,值属性都应该被隐藏。
更新 1:
为了更详细地回答您的问题,我创建了 2 个 html 文件。
HTML 文件 1:
<form>
<div>
<label for="title">Post title:</label>
<input type="text" id="title" name="title" value="My excellent blog post">
</div>
<div>
<label for="content">Post content:</label>
<textarea id="content" name="content" cols="60" rows="5">
This is the content of my excellent blog post. I hope you enjoy it!
</textarea>
</div>
<div>
<button type="submit">Update post</button>
</div>
<input type="hidden" id="postId" name="postId" value="34657">
</form>
这里的值是
value="My excellent blog post"
在 UI 中看起来像这样:
现在让我们假设如果它是 username 输入字段,正如您所描述的那样,我们不想在这种情况下传递 value 属性,而应该是 placeholder attribute。
让我删除value attribute 并改成placeholder。
HTML:
<form>
<div>
<label for="title">Post title:</label>
<input type="text" id="title" name="title" placeholder="Enter your title here">
</div>
<div>
<label for="content">Post content:</label>
<textarea id="content" name="content" cols="60" rows="5">
This is the content of my excellent blog post. I hope you enjoy it!
</textarea>
</div>
<div>
<button type="submit">Update post</button>
</div>
<input type="hidden" id="postId" name="postId" value="34657">
</form>
在 UI 中看起来像这样:
现在,说了这么多,占位符属性不是必填字段,它取决于 UI 开发人员和业务部门。
【讨论】:
value 本身的存在是隐藏的,这就是我要问的。
placeholder 属性,什么都没有。另外,如果我想获得该值,我必须获得 value 属性,这会给我它的价值。
对于文本类型的输入元素(以及其他一些元素),在原生 HTML 中,元素的 value 属性呈现其默认值。
用户插入的文本值不会显示在那里,所以只有默认值将始终显示在value 属性中。
如果没有为该元素设置默认值,value 属性将不会出现在元素 HTML 中。
与所附屏幕截图中的类似。
【讨论】:
value 属性不会出现在 HTML 视图中,因为它没有默认值并且没有使用外部库在那里呈现元素的实际动态值。