致所有人;
我为小数位创建了一个向上和向下计数器,当发生更改时,我强制使用模糊事件使用以下代码重新计算字段:
$('button').click(function(){
var decPlaces = document.calculator.dpv.value * 1;
var hii = document.calculator.origin.value;
if (this.id == 'up' && decPlaces < 9){
document.calculator.dpv.value = decPlaces + 1;
if (hii != ''){
document.calculator[hii].focus();
document.calculator[hii].blur();
}
}
if (this.id == 'down' && decPlaces > 0){
document.calculator.dpv.value = decPlaces - 1;
if (hii != ''){
document.calculator[hii].focus();
document.calculator[hii].blur();
}
}
在FF中工作得很好但在其他人中特别是IE浏览器 - 有关制作更干净和更快的建议表示赞赏。
鲍勃
答案 0 :(得分:29)
触发/强制举办活动的官方jquery方式是
$("selector").trigger("blur");
$("selector").trigger("focus");
但我不确定这对你有什么帮助。
答案 1 :(得分:5)
你正在混合jQuery和DOM调用,你应该真的避免这样做。
为向下和向上按钮创建特定处理程序(通过使用ID标记或类标记),然后通过调用jQuery $("#calculator").val(decPlaces + 1);
答案 2 :(得分:0)
在看到一些有用的评论后,我做了以下更改:
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中仍然不是很敏感。
FYI - autoNumeric函数调用是我创建的一个插件,可以动态进行数字格式化。
再次感谢。
鲍勃答案 3 :(得分:0)
我讨厌不可读的代码,所以我只是为你格式化了这个:)
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));
}
});
});
答案 4 :(得分:0)
最简单的方法就是在更改值后触发change()事件!
例如,如果你写
$('selector').text('I am changing some text').change();
应该有用!