用于更新输入的 Javascript 被占位符覆盖
Javascript to update input is overwritten by placeholder
我有一个简单的输入框,带有占位符值。有一个简单的函数可以更新其值
socket.on('barcode', function (data) {
console.log('data received')
console.log(data);
var barcodeObj = document.getElementById("barcode")
barcodeObj.value = data;
})
我在此上设置了一个 BP,代码实际上可以正确插入条形码,但是在检查函数设置正确后,我继续运行该应用程序,然后再次被占位符快速覆盖。
这是正在运行 ReactJS 并且有一个 onChange 事件,但是,我希望它能正确触发。
输入定义如下
<input
type="text"
id="barcode"
placeholder="barcode.."
value={this.state.barcode}
onChange={this.handleBarcodeChange}
/>
处理程序是这样设置的
handleBarcodeChange: function(e) {
this.setState({barcode: e.target.value});
}
这,没有做任何疯狂的事情。
我在这里错过了什么?
更新:
我能够通过将以下代码注入我的 DeviceForm 反应类来使其工作。
componentDidMount: function () {
var that = this;
this.socket = io();
this.socket.on('barcode', function (data) {
console.log('data received')
console.log(data);
that.setState({barcode: data});
});
这是来自此代码 http://code.runnable.com/VOIYIALkqgAnHDmj/node-js-socket-io-and-react-js
我想你可能只想做这样的事情:
socket.on('barcode', function (data) {
console.log('data received')
console.log(data);
this.setState({barcode: data});
}).bind(this)
setState
应该自动更新 DOM,这意味着输入中的this.state.barcode
将自动更新。调用barcodeObj.value = data;
将同时触发onChange
,这可能会导致您的问题。
相关文章:
- 使用javascript的Asp.net内容占位符
- Internet Explorer缺少占位符支持,特别是密码字段
- 如何隐藏按钮单击事件上的占位符
- 需要URL模板占位符查找和替换功能的输入
- 初始化ng模型时,Angular ui选择占位符不起作用
- 如何在ie7或更高版本中设置密码字段的占位符
- 在不使用javascript的情况下,可以在表单字段中设置文本占位符(以提示最终用户插入特定格式)
- Select2-使用自定义模板时不显示占位符
- 替换字符串中的占位符值
- 为什么我应该使用HTML5(上下文:占位符)
- 在contentEditable元素中居中占位符插入符号
- 从气球弹出窗口中删除占位符
- 选择“选项”时更改输入的占位符
- 错误:ReCAPTCHA占位符元素必须为空
- 如何更改文本区域的颜色's文本,具体取决于它是否为占位符
- 得到一个没有属性的错误“;占位符”;在xhtml strict 1.0中
- 使用Node/Javascript提取字符串中的所有占位符
- 更改 html 输入字段中的占位符属性
- 用于更新输入的 Javascript 被占位符覆盖
- HTML占位符覆盖ng-model值,如果它是0