从依赖于下拉菜单的文本框中获取值,然后添加值

Getting value from textboxes that depends on dropdown menu then adding the values

本文关键字:获取 然后 添加 依赖于 下拉菜单 文本      更新时间:2023-09-26

我有以下代码。我不知道我错了哪一部分。它的作用是,一个值将显示在文本框中,具体取决于下拉列表中的所选选项。然后,将添加两个文本框中的值。它的答案将显示在第三个文本框中。文本框中值的显示完美运行,唯一的问题是它没有添加并且没有显示在第三个文本框中。

<select id="Dropdown1">
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="c">C</option>
</select>
<select id="Dropdown2">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>
<input type="text" id="txt1"/>
<input type="text" id="txt2"/>
<input type="text" id="total"/>

jquery

$(document).ready(function(){
    $("#Dropdown1").change(function(){
        if($(event.target).val() == 'A'){
            $("#Dropdown2").change(function(){
                if($(event.target).val() == '1'){
                    $('#txt1').val('10.00');
                    $('#txt2').val('15.00');
                }else if($(event.target).val() == '2'){
                    $('#txt1').val('45.00');
                    $('#txt2').val('23.00');
                }else { 
                    $('#txt1').val('30.00');
                    $('#txt2').val('53.00');
                }
                if($(event.target).val() == 'B'){
                    $("#Dropdown2").change(function(){
                        if($(event.target).val() == '1'){
                            $('#txt1').val('11.00');
                            $('#txt2').val('17.00');
                        }else if($(event.target).val() == '2'){
                            $('#txt1').val('23.76');
                            $('#txt2').val('46.00');
                        }else { 
                            $('#txt1').val('33.00');
                            $('#txt2').val('53.76');
                        }
                        if($(event.target).val() == 'C'){
                            $("#Dropdown2").change(function(){
                                if($(event.target).val() == '1'){
                                    $('#txt1').val('20.00');
                                    $('#txt2').val('17.00');
                                }else if($(event.target).val() == '2'){
                                    $('#txt1').val('23.76');
                                    $('#txt2').val('40.00');
                                }else { 
                                    $('#txt1').val('37.00');
                                    $('#txt2').val('43.76');
                                }
                            });

JavaScript

function subtotal(){
    var a = document.getElementById("txt1").value;
    var b = document.getElementById("txt2").value;
    var stotal = parseInt(a)+ parseInt(b);
    document.getElementById("total").innerHTML = "$" + stotal;
}

你说你想在第三个文本框中显示它,所以你必须设置它的value属性,或者使用 jQuery val

另外,可能值得告诉您的是,您必须使用parseIntradix部分。在你的情况下,它应该是 10,我想,如果你确定得到一个数字,你可以很好地使用 Number(a)+a 将其转换为数字。

$('#total').val("$" + stotal);

试试这个:

$(document).ready(function(){
	 $("#Dropdown1").change(function(event){
	         if($(event.target).val() == 'A'){
	             $("#Dropdown2").change(function(event1){
	                 if($(event1.target).val() == '1'){
	                     $('#txt1').val('10.00');
	                     $('#txt2').val('15.00');
	                 }else if($(event1.target).val() == '2'){
	                     $('#txt1').val('45.00');
	                     $('#txt2').val('23.00');
	                 }else { 
	                     $('#txt1').val('30.00');
	                     $('#txt2').val('53.00');
	                 }
	                 subtotal();
	             });
	         }
	          if($(event.target).val() == 'B'){
	             $("#Dropdown2").change(function(event1){
	                 if($(event1.target).val() == '1'){
	                     $('#txt1').val('11.00');
	                     $('#txt2').val('17.00');
	                 }else if($(event1.target).val() == '2'){
	                     $('#txt1').val('23.76');
	                     $('#txt2').val('46.00');
	                 }else { 
	                     $('#txt1').val('33.00');
	                     $('#txt2').val('53.76');
	                 }
	                 subtotal();
	             });
	          }
	          if($(event.target).val() == 'C'){
	             $("#Dropdown2").change(function(event1){
	                 if($(event1.target).val() == '1'){
	                     $('#txt1').val('20.00');
	                     $('#txt2').val('17.00');
	                 }else if($(event1.target).val() == '2'){
	                     $('#txt1').val('23.76');
	                     $('#txt2').val('40.00');
	                 }else { 
	                     $('#txt1').val('37.00');
	                     $('#txt2').val('43.76');
	                 }
	     });
	             subtotal();
	          }
	      
	          });
	
 });
function subtotal(){
	var a = $("#txt1").val();
	var b = $("#txt2").val();
	var stotal = parseInt(a)+ parseInt(b);
	$('#total').val('$' + stotal);
	}
   
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <select id="Dropdown1">
  <option >select</option>
  <option value="A">A</option>
  <option value="B">B</option>
  <option value="c">C</option>
 </select>
<select id="Dropdown2">
  <option >select</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
 </select>
<input type="text" id="txt1"/>
<input type="text" id="txt2"/>
<input type="text" id="total"/>

这里有一个工作的小提琴。

事件侦听器过多,一些逻辑错误。

新的jQuery代码:

$("#Dropdown1, #Dropdown2").change(function(){
    if($("#Dropdown1").val() == 'A'){
            if($('#Dropdown2').val() == '1'){
                $('#txt1').val('10.00');
                $('#txt2').val('15.00');
            }else if($('#Dropdown2').val() == '2'){
                $('#txt1').val('45.00');
                $('#txt2').val('23.00');
            }else { 
                $('#txt1').val('30.00');
                $('#txt2').val('53.00');
            }
    }
     if($("#Dropdown1").val() == 'B'){
            if($('#Dropdown2').val() == '1'){
                $('#txt1').val('11.00');
                $('#txt2').val('17.00');
            }else if($('#Dropdown2').val() == '2'){
                $('#txt1').val('23.76');
                $('#txt2').val('46.00');
            }else { 
                $('#txt1').val('33.00');
                $('#txt2').val('53.76');
            }
     }
     if($("#Dropdown1").val() == 'C'){
            if($('#Dropdown2').val() == '1'){
                $('#txt1').val('20.00');
                $('#txt2').val('17.00');
            }else if($('#Dropdown2').val() == '2'){
                $('#txt1').val('23.76');
                $('#txt2').val('40.00');
            }else { 
                $('#txt1').val('37.00');
                $('#txt2').val('43.76');
            }
     }
     subtotal();
 });

编辑:

忘记了小计功能:

function subtotal(){
  var a = document.getElementById("txt1").value;
  var b = document.getElementById("txt2").value;
  var stotal = parseInt(a)+ parseInt(b);
  $('#total').val("$" + stotal);
}

尝试

$('#total').val('$' + stotal);

而不是

document.getElementById("total").innerHTML = "$" + stotal;

。你在哪里调用小计()函数?...我看不出来。每次选择更改时,都应该在"更改"侦听器中调用它(您可以使用 .on() 函数代替)。

另外,您不应该混合使用DOM API(getElementById(...))和jQuery($('#...'))我认为(不是真正的pb,但可读性较差)。

为了摆脱你的条件,你可以在"选项"的值属性上使用你的数值,并节省很多 if() {} else {},或者使用 data-xxx 属性。