【问题标题】:HTML/Javascript - What is happening with '<input type=text' interactions?HTML/Javascript - '<input type=text' 交互发生了什么?
【发布时间】:2016-02-13 04:07:57
【问题描述】:

为输入的 value 属性创建新绑定后,当用户手动修改该值时,该值不再更改。

绑定更改后会丢失什么?常规用户交互是否使用按键侦听器?

我正在更改 setter/getter 以使元素的文本自动绑定到输入的 value 属性(使用 Object.defineProperty(input,'value')...

这导致用户与输入的交互不再更改 value 属性。因此,如果我作为用户在输入中键入“2”,则输入的值仍将是它开始时的值,而不是“2”。

所以重新定义 value 属性一定是打破了旧的 setter。

【问题讨论】:

  • 能否分享一下HTML和js。
  • 你能澄清你的问题吗?提供代码示例等。很难说出您在做什么以及您实际在问什么。
  • 请用你的代码澄清一下。
  • 你能提供一个小提琴或sn-p吗?我什么都猜不到。
  • 从您的主题中,您应该将 '

标签: javascript html


【解决方案1】:

我现在似乎找不到权威参考,但以这种方式更新主机对象(基本上是浏览器提供的任何对象,而不是 JS 本身提供的任何对象)通常是不可能/安全的。如果您坚持,您可以尝试Object.getOwnPropertyDescriptor 看看是否可以在Object.defineProperty 之前获取默认设置器并覆盖它。

更多信息:http://perfectionkills.com/whats-wrong-with-extending-the-dom/(参见特别是“宿主对象没有规则”)

【讨论】:

  • 好吧,我不确定是否有办法获得默认设置器。我发现原始设置器以某种方式与“用户输入更改”事件相关联,并导致属性/属性反过来被更改。我目前最终得到的是“更改”事件触发,但属性是没有改变,我还没有找到任何关于改变的参考。就像你说的那样,这让我需要合并原始设置器,或者通过按键模拟用户交互。
猜你喜欢
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 2013-06-28
  • 2012-06-10
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多