用输入jQuery的.val()计算

时间:2014-11-17 15:59:04

标签: javascript jquery html

我正在研究一个项目,我必须对输入字段的现有值进行一些计算。假设输入值为400或其他任何值。

下面我有一个选择框表示添加 425 表示添加 0 或减去-425;

HTML:

<input id="priceTag" name="priceTag" type="text" value="400">

<select id="designChoice" name="designChoice">
     <option>Choose--</option>
     <option value="yes">yes</option>
     <option value="no">no</option>
</select>

jQuery的:

jQuery(document).ready(function($){

    var priceTag = $('#priceTag');        

    $('#designChoice').on('change', function(){

        if($(this).val()==='yes'){              
          /* Here i want to add + 425 to the */

        }else{
          /* Here I want to add nothing to the input or substract -425 */   
        }

    });
});

我尝试了什么:

priceTag.val(+ 425);
/* And more of this type of wrong code ;-P */

我试图查找现有的例子,但我没有找到很多例子,所以提前感谢答案!

4 个答案:

答案 0 :(得分:6)

这个逻辑有点复杂。您需要知道在点击425之前是否已添加no,在这种情况下您需要减去425,而不只是添加0

考虑到这一点,您可以在输入中添加data属性以包含它的起始价格:

<input id="priceTag" name="priceTag" type="text" value="400" data-default="400">

然后,当select被更改时,您可以将data属性转换为整数,然后对其执行计算。试试这个:

jQuery(document).ready(function ($) {
    var $priceTag = $('#priceTag');        
    $('#designChoice').on('change', function () {
        if ($(this).val() === 'yes') {
            $priceTag.val(parseInt($priceTag.data('default'), 10) + 425);            
        } else {
            $priceTag.val($priceTag.data('default'));
        }        
    });
});

Example fiddle

答案 1 :(得分:2)

使用此:

JS:

jQuery(document).ready(function($){

    var priceTag = $('#priceTag');        
    var selectedYes=false;
    $('#designChoice').on('change', function(){
        if($(this).val()==='yes'){              
          /* Here i want to add + 425 to the */
            selectedYes=true;
            priceTag.val( ( +priceTag.val() ) + 425 );
        }else if (selectedYes){
          /* Here I want to add nothing to the input */ 
            priceTag.val( ( +priceTag.val() ) - 425 );
            selectedYes=false;
        }

    });
});

JSFIDDLE:http://jsfiddle.net/ghorg12110/0xvkupe2/1/

答案 2 :(得分:0)

在页面加载时以及每当用户更改时,将#priceTag的值保存到数据属性:

&#13;
&#13;
jQuery(document).ready(function($){

    var priceTag = $('#priceTag'),
        designChoice = $('#designChoice');
    
    //save initial value and whenever it is changed to a data attribute
    priceTag.on('change', function() {
        $(this).data('value', this.value);
        designChoice.change();
    })
    .change();

    designChoice.on('change', function(){

        if($(this).val()==='yes') {
            /* Here i want to add + 425 to the */
            priceTag.val( +priceTag.data('value') + 425 );
        } else{
            /* Here I want to add nothing to the input or substract -425 */ 
            priceTag.val( priceTag.data('value') );
        }

    });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="priceTag" name="priceTag" type="text" value="400">

<select id="designChoice" name="designChoice">
     <option>Choose--</option>
     <option value="yes">yes</option>
     <option value="no">no</option>
</select>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

在这里。

jQuery的:

var priceTagAns = 0;   
$(document).ready(function(){   

    $('#designChoice').on('change', function(){

        if($(this).val()==='yes'){              
          /* Here i want to add + 425 to the */
           priceTagAns = (Number($("#priceTag").val()) + 425);
        }else{
          /* Here I want to add nothing to the input */ 
            priceTagAns = (Number($("#priceTag").val()));
        }
        alert(priceTagAns);
    });

});

警报只是为了证明价值已设定,按照你的意愿行事。

使用JSFiddle:http://jsfiddle.net/89z7qpkf/2/

*更新*

也是可变版本:http://jsfiddle.net/89z7qpkf/3/