【问题标题】:Check if form field changes检查表单字段是否更改
【发布时间】:2011-08-23 06:05:05
【问题描述】:

我有一些表单字段,例如<input><textarea><dropdown> 等。

如果用户在任何表单字段中进行更改,应立即提示该字段更改。

我应用了不同的事件,例如 onKeyPress(对退格键不起作用)、onChange(在失去焦点时起作用)。

在简单/普通的javascript中是不可能的,那么我想在Dojo中知道它。

【问题讨论】:

标签: javascript html forms events javascript-events


【解决方案1】:

查看堆栈问题:Detect all changes to a <input type="text"> (immediately) using JQuery

虽然接受的答案是使用 jquery setInterval 与 javascript 一起工作得很好。只需使用 GetElementByID 或 GetElementsByTagName 来获取您的输入字段,然后只需对照自己检查它们的值。

【讨论】:

  • 请注意,在大多数情况下,要求“立即”知道是不合理的。
【解决方案2】:

没有 HTML“下拉”元素,您可能指的是选择。

对于某些控件,您可以将控件的当前值与其 defaultValue 进行比较以查看它是否已更改,然后选择适合该控件的任何事件。对于 select,onchange 是最好的,并与之前选择的选项(如果有的话)进行比较。输入和文本区域,您可能会使用 keyup。单选按钮和复选框单击并与之前选中的那个进行比较(如果有的话)。

【讨论】:

  • 当我只按 ctrl 键时,对于 Input 和 textarea onKeup 失败
  • 您不能仅通过按控制键来更改值,所以如果它不调度事件,您为什么要关心? control、shift 和 option 键(以及其他键)是修饰键,它们构成键事件的一部分,与可能更改控件值的其他键不同。
  • 但是输入应该仍然具有相同的值。只需检查以消除此类事件(shift,alt ..等)
【解决方案3】:

通过输入字段上的javascript附加事件onFocusOnfocus setTimeout() 并使其递归。如果有任何内容发生变化,它会通知。就我而言,它有效;甚至我也从中完成了另一项任务。我在页面加载时保存现有的输入字段值。例如,在页面加载时是 abc。用户将其更改为 abcd 然后将有一条消息用于取消保存更改。但是当用户删除 d 并再次使其 abc 时,消息将消失,意味着没有未保存的更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2022-12-09
    • 2011-02-20
    • 2019-09-27
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    相关资源
    最近更新 更多