从dom中隐藏输入值属性

Posted

技术标签:

【中文标题】从dom中隐藏输入值属性【英文标题】:Hide input value attribute from the dom 【发布时间】:2019-01-04 20:40:53 【问题描述】:

由于某种原因,当 react 更新输入值时,该值会显示在 DOM 中。 目前我正在使用此代码:

< input type="password" id="password" value="anytext" />

出于安全原因,有什么方法可以隐藏 value 属性中的文本?也许是这样的:

< input type="password" id="password" value />

感谢大家的意见。

【问题讨论】:

这不应该发生。能否显示更新的相关代码? 请发布您的代码。 codesandbox.io/s/wonderful-snyder-3o2dd?file=/src/App.js 这是代码 【参考方案1】:

在我看来这种行为不会发生:

class Demo extends React.Component 
    constructor(props) 
        super(props);
        this.state =  password: 'test', test: '' 
        setInterval(function() 
            document.getElementById('test').innerText = 'ATTRIBUTE: ' + document.getElementById('password').getAttribute('value');
        .bind(this), 200);
    
    render() 
        return <div><input id="password" type="password" value=this.state.password onChange=(e) => this.setState(password: e.target.value) /><pre id="test">ATTRIBUTE: this.state.test</pre><pre id="value">VALUE: this.state.password</pre></div>
    


ReactDOM.render(
  <Demo />,
  document.getElementById("root")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"/>

【讨论】:

只有在有人开始在输入字段中输入时才会显示 如我的示例所示,该属性保持为空,即使在键入时也是如此。 @dave codesandbox.io/s/wonderful-snyder-3o2dd?file=/src/App.js 看看这个,react 在这里显示值 啊,我明白了,那是因为您使用的是“纯”组件,所以它会在每次状态更改时重新渲染整个输入。你可以这样做:codesandbox.io/s/broken-frost-swkp3?file=/App.js,它的工作原理是一样的,但你看不到 DOM 中的值

以上是关于从dom中隐藏输入值属性的主要内容,如果未能解决你的问题,请参考以下文章

如何从 InstallShield Suite/高级 UI 设置的日志中隐藏输入的密码值

从输入字段读取属性时 HTML 编码丢失

获取 symfony 控制器中隐藏输入字段的值属性

如何从另一个输入文本字段Javascript中输入的值将值设置为输入隐藏字段

jQuery 更新隐藏的输入值,但不传递给 POST 变量

前端js实践——输入框内容的显示和隐藏