更改函数时jquery更改文本一次

时间:2014-06-11 23:46:18

标签: javascript jquery

问题在于,当我更改选项时,它会保持求和,我希望它只能将10.00的值加一次,如果值为AR则只减去一次。

LIVE LINK:http://jsfiddle.net/A3qLG/1/

JQUERY:

$(document).ready( function() {

    $('#country').on('keyup change', function(e){

        var subt_value = $('#subt0').text();

        if($(this).val() == 'AR' || $(this).val() == ''){           
        if(subt_value != '0.00' ){$('#subt0').text(parseFloat(subt_value-10).toFixed(2));}      
        }else{          
        var add_sub = parseFloat(subt_value)+parseFloat('10.00');
        $('#subt0').text(parseFloat(add_sub).toFixed(2));
        }

    });

});

HTML:

<label id="subt0">8.90</label>

<select id="country">
  <option value="US">USA</option>
  <option value="BR">Brasil</option>
  <option value="AR">Argentina</option>
  <option value="CU">Cuba</option>
</select> 

5 个答案:

答案 0 :(得分:1)

我会将HTML更改为此值以存储原始值:

<label id="subt0" data-original="8.90">8.90</label>

然后将Javascript调整为:

$(document).ready( function() {

    $('#country').on('keyup change', function(e){

        //Changed the following line to get the original value      
        var subt_value = $('#subt0').attr('data-original');

        //Changed this to say, NOT AR and has a choice per the comments.            
        if($(this).val() != 'AR' && $(this).val().length > 0) {
          var add_sub = parseFloat(subt_value)+parseFloat('10.00');
          $('#subt0').text(parseFloat(add_sub).toFixed(2));
        } else {
          //Otherwise put it back to the original value
          $('#subt0').text(subt_value);
        }

    });

});

答案 1 :(得分:1)

试试这段代码

$(document).ready( function() {

    $('#country').on('keypress change', function(e){

        var subt_value = $('#subt0').text();

        if($(this).val() == 'AR' || $(this).val() == ''){           
        if(subt_value != '0.00' ){$('#subt0').text(parseFloat(subt_value-10).toFixed(2));}      
        }else{          
        var add_sub = parseFloat(subt_value)+parseFloat('10.00');
        $('#subt0').text(parseFloat(add_sub).toFixed(2));
        }

    });

});

答案 2 :(得分:1)

您需要记住以前的#country选择值,并在做出决定时使用它:

$(document).ready(function () {
    var prevValue = '';
    $('#country').on('keyup change', function (e) {
        var newValue = $(this).val();
        var subt_value = parseFloat($('#subt0').text());

        if ((newValue == 'AR' || newValue == '')) {
            if (prevValue != '' && prevValue != 'AR') {
                $('#subt0').text((subt_value - 10).toFixed(2));
            }
        } else {
            if (prevValue == 'AR' || prevValue == '') {
                $('#subt0').text((subt_value + 10).toFixed(2));
            }
        }
        prevValue = newValue;
    });

});

http://jsfiddle.net/A3qLG/5/

答案 3 :(得分:0)

只需在完成工作后删除onkeyup和onchange事件处理函数。

$('#country').off('keyup change');

答案 4 :(得分:0)

Jquery专门针对.change()

提供<select>

您希望仅对所选值AR的条件求和一次并仅减去一个时基。因此,如果存在change,则只需检查所选值,并在if-else语句中进行数学运算。最后将结果附加到.toFixed(2)

var subt_value = $('#subt0').text(); 
var add_sub = 0, f=10.00;
$('#country').change(function(){
    if ($(this).val() != 'AR'){
       add_sub = parseFloat(subt_value)+f;
    }else{
        add_sub = parseFloat(subt_value)-f;
    }

    $('#subt0').text(add_sub.toFixed(2));

});

JSFiddle Demo