当我触发一个事件时,它会被触发几次,而不是在jQuery中的输入时触发一次
When I trigger an event, it is fired few times instead one time on input in jQuery
我有以下HTML代码,简单的一个:
<input type="text" />
<input type="hidden" />
<input type="button" value="ok" />
和javascript:
$(function(){
$(":text").on("keyup", function(){
$(":hidden").val($(this).val()).trigger("propertychange");
});
$(":hidden").on("propertychange", function(){
alert($(this).val());
});
$(":button").on("click", function(){
alert($(":hidden").val());
});
});
当我在输入类型text
中键入某个内容时,警报会显示几次,而不是一次。
如何修复?
请参阅jsFiddle。(我用Firefox检查过)
您的:hidden
选择器实际上匹配8个元素(包括<head>
、<title>
和<script>
),而不是仅匹配隐藏的输入,因此每个元素都会引发propertyChange
事件。
来自jQuery隐藏文档:
在一些浏览器中:隐藏包括标题、标题、脚本等…
试试这个:
$("input:hidden").on("input propertychange", function(){
alert($(this).val());
});
试试这个,
$(function(){
$(":text").on("keyup", function(e){
e.preventDefault();
$(":hidden").val($(this).val()).trigger("propertychange");
alert($(this).val());
});
$(":hidden").on("input propertychange", function(){
});
$(":button").on("click", function(){
alert($(":hidden").val());
});
});
将任何类或ID应用于隐藏,由于使用fiddle,它也在访问其他一些隐藏对象。请尝试以下代码。
$(function(){
$(":text").on("keyup", function(){
$(".md:hidden").val($(this).val()).trigger("propertychange");
});
$(".md:hidden").on("input propertychange", function(){
alert($(this).val());
});
$(":button").on("click", function(){
alert($(".md:hidden").val());
});
});
我更新了你的小提琴检查这个[fiddle](http://jsfiddle.net/gkvgzc5p/2/)
相关文章:
- 如何使用jQuery一次关闭多个弹出窗口
- 使用Ajax和Jquery一次加载100个块的Wordpress帖子
- JQuery-一次停止所有音频
- 如何使用 jQuery 一次只选择一个具有不同名称的单选按钮
- 使用 Javascript/jQuery 一次播放一个 HTML 音频文件
- jQuery一次又一次地调用该函数
- jQuery一次触发所有模态窗口,即使具有不同的目标 #id
- 如何打开IndexedDB只用jquery一次承诺
- Jquery一次选择所有选中和选中的元素
- Jquery一次打开一个部分
- JQuery一次切换两个类
- Jquery一次将多个选择器推入一个对象
- 使用jQuery一次输入回显五次
- 如何用jQuery一次填充一个无序列表中的一个元素
- 使用jquery一次又一次地更改字符串
- 如何使用jQuery一次只显示一个弹出框
- 使用jquery一次简化多个属性的编写
- 使用JQuery一次删除一个项
- jQuery一次为一个动态元素设置动画
- Jquery 一次循环和绑定 10 条记录