正在检测表单是否已更改,脚本是否不起作用
Detecting if form has changed, script not working
我正在尝试使用以下脚本来检测表单中是否有字段发生了更改(编辑:检测表单字段的值是否发生了更改),并在发生更改时提醒用户。否则,将显示另一个js框。
不过,它没有检测到任何变化,而且确认框从未显示。我做错了什么?
$('#eventMedia').click(function() {
var form_changed = false;
$('#tribe-events > form').on('keyup change', 'input, select, textarea', function(){
form_changed = true;
});
if (form_changed == true) {
confirm('You have unsaved changes! Click Cancel to save your changes before continuing.');
} else {
$('#eventMediaBox').show();
$('#blackFade').show();
}
});
只有在单击#eventMedia
按钮后才开始注册keyup
和change
事件,这可能不是所需的顺序。
相反:
// Set the boolean flag variable first
var form_changed = false;
// On `input change` events - set flag to truthy
$('#tribe-events > form').on('input change', 'input, select, textarea', function(){
form_changed = true;
});
// Showtime!
$('#eventMedia').click(function() {
if (form_changed) {
alert('You have unsaved changes! Save your changes before continuing.');
} else {
$('#eventMediaBox, #blackFade').show();
}
});
注意,"input"
事件(在.on('input change'
中)还将涵盖用户使用鼠标等粘贴内容的情况
此外,不要忘记在代码中有时将form_changed
重置回false
。。。
现在回想一下你的UI。。。我有个问题。"为什么?"。是的,如果用户没有更改表单中的任何内容,为什么要显示"SAVE"或#eventMedia
所做的任何操作?我的意思是,如果用户做了任何更改,就没有理由做任何事情——对吧?
我认为这就足够了:
> button is disabled="true"
> (User makes changes?) on `input change` make enabled.
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 测试mongo脚本中是否存在参数
- 是否可以通过Chrome扩展内容脚本打开Chrome外部协议请求
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- 浏览器是否持久缓存脚本元素的编译版本
- Javascript是否可以在VPS/远程服务器上执行Ruby脚本
- 如何知道是否加载了JavaScript(脚本)
- 是否在Script Src标记中包含Script<脚本>(JavaScript等)
- 是否可以添加<脚本>添加'_someTag'到iFrame中的URL
- 是否有用于加载外部脚本的JavaScript库
- 内容安全策略指令:;脚本src'self'blob:文件系统:chrome扩展资源:“;获取是否时
- 是否可以从弹出窗口触发内容脚本中的行为
- 是否可以在node.js依赖项上运行脚本
- Unity javascript我如何从另一个脚本中检查bool是否为真
- 如何测试jQuery和某些其他脚本是否已加载
- 我是否应该在网站的每个页面上都包含 Google 地图脚本标签
- 如何在呈现页面后使用 Java 脚本检测 dom 元素值的值是否有任何变化(例如,任何输入或复选框值更改)
- Javascript:是否可以读取外部脚本的原始代码
- 是否可以在不使用服务器端脚本或编程的情况下在网页中进行实时视频流