在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浏览器中拖拽 – 有关使清洁器更快更快的建议表示赞赏。

短发

触发/强制事件的官方jquery方式是

 $("selector").trigger("blur"); $("selector").trigger("focus"); 

但我不确定这对你有什么帮助。

你正在混合jQuery和DOM调用,你应该真的避免这样做。

为Down和Up按钮创建特定的处理程序(通过使用ID标签或类标签),然后通过调用jQuery $("#calculator").val(decPlaces + 1);更改计算器值的值$("#calculator").val(decPlaces + 1);

我讨厌不可读的代码,所以我只是为你格式化了:)

 jQuery(function($) { $("button").bind("click", function(e){ var decPlaces = $('#dpv').val() * 1; var hi1 = $('#origin').val(); if (this.id == 'up' && decPlaces < 5){ $('#dpv').val(decPlaces + 1); if (hi1 != ''){ $('#' + hi1).trigger("blur"); } } if (this.id == 'down' && decPlaces > 0){ $("#dpv").val(decPlaces - 1); if (hi1 != ''){ $('#' + hi1).trigger("blur"); } } }); $('input.auto').focus(function(){ if (this.id != 'dpv'){ $(this).parent().addClass("curFocus") } }); $('.clearAll').focus(function(){ $('.clearAll').val(""); }); $('input.auto').blur(function(){ $(this).parent().removeClass("curFocus") var sqft = 10.76391041670972192890; //square feet per square meter var lbs = 2.20462262184877566540; //pounds per kilo var bwiv = ''; var sfiv = ''; var bwmv = ''; var smmv = ''; $('#origin').val(this.id); if((this.id == 'bwi' || this.id == 'sfi') && this.value != ''){ // imperial if(this.id == 'bwi'){ bwiv = $.fn.autoNumeric.Strip(this.id); sfiv = (3000 / bwiv); $('#sfi').val($.fn.autoNumeric.Format('sfi', sfiv)); } if(this.id == 'sfi'){ sfiv = $.fn.autoNumeric.Strip(this.id); bwiv = (3000 / sfiv); $('#bwi').val($.fn.autoNumeric.Format('bwi', bwiv)); } bwmv = (((bwiv / lbs) / (3000 / sqft)) * 1000); smmv = (1000 / bwmv); $('#bwm').val($.fn.autoNumeric.Format('bwm', bwmv)); $('#smm').val($.fn.autoNumeric.Format('smm', smmv)); } if((this.id == 'bwm' || this.id == 'smm') && this.value != ''){ //metric if(this.id == 'bwm'){ bwmv = $.fn.autoNumeric.Strip(this.id); smmv = (1000 / bwmv); $('#smm').val($.fn.autoNumeric.Format('smm', smmv)); } if(this.id == 'smm'){ smmv = $.fn.autoNumeric.Strip(this.id); bwmv = (1000 / smmv); $('#bwm').val($.fn.autoNumeric.Format('bwm', bwmv)); } bwiv = ((((bwmv / 1000) * lbs) / sqft) * 3000); sfiv = (3000 / bwiv); $('#bwi').val($.fn.autoNumeric.Format('bwi', bwiv)); $('#sfi').val($.fn.autoNumeric.Format('sfi', sfiv)); } }); 

});

在看到一些有用的评论后,我做了以下更改:

 jQuery(function($) { $("button").bind("click", function(e){ var decPlaces = $('#dpv').val() * 1; var hi1 = $('#origin').val(); if (this.id == 'up' && decPlaces < 5){ $('#dpv').val(decPlaces + 1); if (hi1 != ''){ $('#' + hi1).trigger("blur"); } } if (this.id == 'down' && decPlaces > 0){ $("#dpv").val(decPlaces - 1); if (hi1 != ''){ $('#' + hi1).trigger("blur"); } } }); $('input.auto').focus(function(){ if (this.id != 'dpv'){ $(this).parent().addClass("curFocus") } }); $('.clearAll').focus(function(){ $('.clearAll').val(""); }); $('input.auto').blur(function(){ $(this).parent().removeClass("curFocus") var sqft = 10.76391041670972192890; //square feet per square meter var lbs = 2.20462262184877566540; //pounds per kilo var bwiv = ''; var sfiv = ''; var bwmv = ''; var smmv = ''; $('#origin').val(this.id); if((this.id == 'bwi' || this.id == 'sfi') && this.value != ''){ // imperial if(this.id == 'bwi'){ bwiv = $.fn.autoNumeric.Strip(this.id); sfiv = (3000 / bwiv); $('#sfi').val($.fn.autoNumeric.Format('sfi', sfiv)); } if(this.id == 'sfi'){ sfiv = $.fn.autoNumeric.Strip(this.id); bwiv = (3000 / sfiv); $('#bwi').val($.fn.autoNumeric.Format('bwi', bwiv)); } bwmv = (((bwiv / lbs) / (3000 / sqft)) * 1000); smmv = (1000 / bwmv); $('#bwm').val($.fn.autoNumeric.Format('bwm', bwmv)); $('#smm').val($.fn.autoNumeric.Format('smm', smmv)); } if((this.id == 'bwm' || this.id == 'smm') && this.value != ''){ //metric if(this.id == 'bwm'){ bwmv = $.fn.autoNumeric.Strip(this.id); smmv = (1000 / bwmv); $('#smm').val($.fn.autoNumeric.Format('smm', smmv)); } if(this.id == 'smm'){ smmv = $.fn.autoNumeric.Strip(this.id); bwmv = (1000 / smmv); $('#bwm').val($.fn.autoNumeric.Format('bwm', bwmv)); } bwiv = ((((bwmv / 1000) * lbs) / sqft) * 3000); sfiv = (3000 / bwiv); $('#bwi').val($.fn.autoNumeric.Format('bwi', bwiv)); $('#sfi').val($.fn.autoNumeric.Format('sfi', sfiv)); } }); }); 

在IE中,增加或减少小数设置的向上按钮仍然不是很敏感。

仅供参考 – autoNumeric函数调用是我创建的插件,它可以动态进行数字格式化。

再次感谢。

短发

最简单的方法就是在更改值后触发change()事件!

例如,如果你写

 $('selector').text('I am changing some text').change(); 

应该工作!