2009-08-09 16 views
13

सभी को;jQuery में एक घटना को मजबूर करें

मैं दशमलव स्थानों के लिए एक ऊपर और नीचे बनाया है काउंटर और जब कोई परिवर्तन होता है मैं इसे निम्न कोड के साथ क्षेत्रों पुनर्गणना के लिए एक कलंक घटना के लिए मजबूर किया है:

$('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(); 
     } 
    } 

एफएफ में काम करता है अच्छी तरह से, लेकिन दूसरों में खींच लेता है विशेष रूप से आईई - क्लीनर और तेज़ बनाने पर सुझावों की सराहना की जाती है।

बॉब

+2

क्या आप धुंध/फोकस ईवेंट भी दिखा सकते हैं। – redsquare

उत्तर

5

आप मिश्रण कर रहे हैं jQuery और डोम कहता है, तुम सच में ऐसा करने से बचना चाहिए।

(या तो आईडी टैग या वर्ग टैग का उपयोग करके) नीचे और ऊपर बटन के लिए विशिष्ट संचालकों बनाएं और फिर jQuery $("#calculator").val(decPlaces + 1);

+0

मदद के लिए धन्यवाद –

29

आधिकारिक jQuery तरह से गति प्रदान करने को फोन करके अपने कैलकुलेटर मूल्य का मूल्य बदल/एक के लिए मजबूर घटना

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

है लेकिन मुझे यकीन है यह है कि क्या आप में मदद मिलेगी है नहीं कर रहा हूँ।

+0

सभी के लिए धन्यवाद, आप एक बहुत मददगार रहे हैं। –

+1

प्रश्न के शीर्षक पर सही जवाब। <3 Google + StackOverflow। उन लोगों के लिए जो Google के लिए आलसी हैं, .trigger() के लिए JQuery दस्तावेज़ http://api.jquery.com/trigger/ पर है –

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 में बहुत संवेदनशील नहीं हैं।

एफवाईआई - ऑटो न्यूमेरिक फ़ंक्शन कॉल एक प्लगइन है जिसे मैंने बनाया है जो कि फ्लाई पर संख्यात्मक स्वरूपण करता है।

फिर से धन्यवाद।

बॉब

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)); 
     } 
}); 

});

0

सबसे आसान तरीका केवल अपना मूल्य बदलने के बाद एक बदलाव() ईवेंट ट्रिगर करना है!

उदाहरण के लिए, यदि आप लिखना

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

काम करना चाहिए कि!

संबंधित मुद्दे