Tag: 事件处理

在jQuery中强制执行事件

对所有人; 我为小数位创建了一个向上和向下计数器,当发生更改时,我强制使用以下代码重新计算字段的模糊事件: $(‘button’).click(function(){ var decPlaces = document.calculator.dpv.value * 1; var hii = document.calculator.origin.value; if (this.id == ‘up’ && decPlaces 0){ document.calculator.dpv.value = decPlaces – 1; if (hii != ”){ document.calculator[hii].focus(); document.calculator[hii].blur(); } } 在FF中运行良好,但在其他特别是IE浏览器中拖拽 – 有关使清洁器更快更快的建议表示赞赏。 短发

有没有办法在focusOut中使用event.preventDefault? 如果没有,为什么?

我想阻止focusOut (或blur )事件的默认事件,并将焦点设置为特定的输入字段。 这是我已经尝试过的: 在函数的开头和结尾使用event.preventDefault() (用于测试目的,而不是样式) return false; 防止传播 将焦点直接设置回元素中的元素(但我发现焦点仍然会切换,因为在.on()函数执行后执行焦点切换。我知道我可以使用setTimeout ,但我想避免它并弄清楚问题的核心。) 使用blur而不是focusOut 我的代码是这样的: _triggerEventHide: function(inst, eventType) { inst.$target.on(eventType, function(event) { event.preventDefault(); if (!$.suggestBox.$divCont.hasClass($.suggestBox.mouseOverClassName)) { $.suggestBox.$divCont.css({display: ‘none’}); //reposition Suggestbox } else { inst.target.focus(); } event.preventDefault(); return false; }); } 请注意, $target表示jQuery包装的元素, target表示本机DOM元素。 我做了一些研究,已经发现了一些与我的问题相关的文章,但没有一个回答这个问题。 preventDefault对焦点事件不起作用 – 这里给出的答案是使用任何类型的事件操作的替代路径。 如果没有必要的值 ,将焦点reflection回文本框 – 这里,解决方案是使用setTimeout()将焦点设置回原始元素,这很好 ,但我想了解问题的核心,为什么preventDefault()不能在这里工作。 jQuery preventDefault()不工作 – 我尝试了一些可能的解决方案来自这个线程,比如使用event.stopImmediatePropagation()和event.stop() ,但一切都没有用。 […]

JQuery Datepicker,无法手动触发onSelect事件!

我正在使用jquery的datepicker,只要从内联datepicker对象中选择日期,就会从ajax调用中填充项目列表。 该脚本工作正常,但我无法触发onSelect事件来填充我的初始项目列表。 我可以通过最初使用php填充列表来解决这个问题,但我真的想避免这种情况。 $(document).ready(function(){ //create date pickers $(“#date_calendar”).datepicker( { changeMonth: true, changeYear: true, dateFormat: ‘yy-mm-dd’, defaultDate: $.datepicker.parseDate(“ymd”, $(‘#date’).val()), onSelect: function(dateText, inst) { alert(‘onSelect triggered! Yay!’); $(‘#date’).val($.datepicker.formatDate(“yy-mm-dd”, $(‘#date_calendar’).datepicker(‘getDate’))); // Ajax for populating days when selected $.post( “server_requests/show_day.php”, { date: $(‘#date’).val(), user_id: $(‘#user_id’).val() }, function(data) { //return function $(‘#my_day_tasks’).html(data.resultTable); }, “json” ); } }).disableSelection(); $(“#date_calendar”).trigger(‘onSelect’); }); 任何帮助表示赞赏:)

事件处理程序绑定到匿名函数vs命名函数

我知道.on()存在jQuery,并且将来不应该使用.bind() ,因为我的jQuery版本大于或等于1.7。 我想知道的是:使用.bind()将匿名函数或命名函数附加到事件处理程序之间是否有任何区别? 例: // Anonymous function $(“.warning”).bind(“click”, function(){ alert(“Hello”); }); // Named function $(“.warning”).bind(“click”, foo); function foo(){ alert(“Hello”); } 想象一下,我的页面中有100个div和类warning 。 函数.bind()会将一个新函数附加到具有匿名函数的每个处理程序,但是它与JavaScript和jQuery内部的命名函数完全相同吗? 谢谢。

当你删除()一个元素并将它追加到其他地方时,jQuery中的事件是否会丢失?

当你删除()一个元素并在其他地方附加()时,jQuery会发生什么? 看起来这些事件是不被取消的 – 好像你只是插入了新的html(我猜这是发生了什么)。 但它也可能我的代码中有一个错误 – 所以我只想在继续之前validation这种行为。 如果是这种情况 – 是否有任何简单的方法可以将事件重新连接到HTML的那一部分,或者以不同的方式移动元素而不会丢失事件。

使用charcount插件的Ckeditor字符限制

如何在达到最大字符限制后 阻止用户输入新字符? Ckeditor charcount插件只显示剩余的字符,我希望它停在0.但它会减去整数。 这是我的HTML代码。 CKEDITOR.replace(‘myTextEditor1’, { height: 200, extraPlugins: ‘charcount’, maxLength: 10, toolbar: ‘TinyBare’, toolbar_TinyBare: [ [‘Bold’,’Italic’,’Underline’], [‘Undo’,’Redo’],[‘Cut’,’Copy’,’Paste’], [‘NumberedList’,’BulletedList’,’Table’],[‘CharCount’] ] }); 我必须使用onChange插件吗? 如果我必须如何限制用户输入新字符?

jQuery键盘事件处理程序按住

我想为游戏创建一个简单的事件处理程序,这是我的代码 $(document).keydown(function(e){ switch(e.keyCode){ case 65: //left (a) console.log(‘left’); break; case 68: //right (d) console.log(‘right’); break; } }); 问题是如果我按住一个键,稍微触发多次。 我该如何防止这种行为? 我在谷歌浏览器上运行我的代码

如何防止快速点击两次调用en事件处理程序?

有一个按钮,当用户点击按钮时,一些数据被保存到后端。 问题是当用户非常快速地点击按钮时,事件处理程序会多次执行。 这是代码 var x = 1; $(‘#button’).click(function() { // Do something // Save some data on network x++; console.log(x); }); 我希望当用户单击按钮一次时执行此处理程序。 即使在双击或三击的情况下,也只能执行一次。 我只是想避免快速点击,这个处理程序可以再次执行 我脑子里有多种解决方案 定义一个全局变量,如IS_BUTTON_HANDLER_WORKING = false ,当您输入处理程序时,将其设置为true,最后再将其设置为false。 并检查是否真的从函数返回。 在开头分离处理程序并在最后重新附加。 假设您的应用程序中有25个按钮。 应该是实现这一目标的最佳方法。 看看这个小提琴 解 $(‘#button’).click(function() { $(this).attr(‘disabled’, true); // Do something // Save some data on network $(this).removeAttr(‘disabled’); }); 使用这个,我们确信我们的下一个处理程序只有在完全执行上一次执行时才会执行。

如何检测元素是否已滚出,但只有一次?

我试图检测一个元素是否已滚出并完成以下代码 $(window).bind(‘scroll’, function(){ var $btn = $(‘#intro div.summary a[href=#top]’); if($(window).scrollTop() > ($btn.offset().top+$btn.height())){ console.log(‘out’); } }); 我在一些正文文本中有一个锚点,我希望克隆并在div.intro滚动出来后制作一个固定的导航。 我的问题是,只要元素不在视图中,代码就会触发,但会一直触发。 所以我不能再做了,因为任何更多的东西会继续射击。 有没有办法一旦它出来就“开出”并且一旦进入就“开始”? 除了设置一个变量。

单击“提交”按钮时,jQuery停止.blur()事件

我正在构建一个带有简单演示电子邮件注册表单的小型登录页面。 我希望在聚焦时打开表单字段,然后缩小模糊。 然而,我遇到的问题是,当您单击提交按钮时,这会启动模糊function,隐藏按钮并缩小表单。 我需要找到一种方法来停止.blur()方法只有当用户点击以关注提交按钮时。 这有什么好的解决方法吗? 非常感谢我能得到的任何帮助!