我正在研究一个项目,我必须对输入字段的现有值进行一些计算。假设输入值为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 */
我试图查找现有的例子,但我没有找到很多例子,所以提前感谢答案!
答案 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'));
}
});
});
答案 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;
}
});
});
答案 2 :(得分:0)
在页面加载时以及每当用户更改时,将#priceTag
的值保存到数据属性:
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;
答案 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/
*更新*