简体   繁体   English

Select 选项与相同的 CSS class 和 jQuery

[英]Select options with the same CSS class and jQuery

I am new to jQuery/JS and I have this problem: You can run my code and see that count is not correct:我是 jQuery/JS 的新手,我遇到了这个问题:您可以运行我的代码并查看计数不正确:

 $('.form-control').change(function() { countTotal(); }); $('.form-control').change(function() { countTotal(); }); function countTotal() { var level1 = parseInt($(".form-control:selected").val(), 10); var level2 = parseInt($(".form-control:selected").val(), 10); var total = level1 * level1; $(".form-group > #riz").val(total); $(".form-group > #riz").attr("disabled", true); }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> <div class="form-group"> <select class="form-control"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <div class="form-group"> <select class="form-control"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <div class="form-group"> <input id="riz"> </div> <hr> <div class="form-group"> <select class="form-control"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <div class="form-group"> <select class="form-control"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <div class="form-group"> <input id="riz"> </div>

My HTML has to stay the same, I have to find some way to jQuery work in this example and keep the HTML structure the same.我的 HTML 必须保持不变,我必须找到一些方法让 jQuery 在此示例中工作并保持 HTML 结构相同。 If you have any idea how to solve this, feel free to comment or share code ideas.如果您对如何解决此问题有任何想法,请随时发表评论或分享代码想法。
I appreciate your help!我感谢您的帮助!

There is multiple problems with your code.您的代码存在多个问题。

First, you are using the same id multiple times.首先,您多次使用相同的 id。 ID must be unique. ID 必须是唯一的。

Second, think this is wrong var total = level1 * level1;二、认为这是错误的var total = level1 * level1; should be var total = level1 * level2;应该是var total = level1 * level2;

Third, you don't need to use :selected in $(".form-control:selected").val() , since $(".form-control").val() will always take the value of the selected option, if your element is a select.第三,您不需要在$(".form-control:selected").val()中使用:selected ,因为$(".form-control").val()将始终采用 selected 的值选项,如果您的元素是 select。

Now I have changed both your html and jquery so it will work to your requirement.现在我已经更改了您的 html 和 jquery,因此它可以满足您的要求。

Demo演示

 $('.form-control').change(function() { countTotal($(this)); }); function countTotal(ele) { var level1 = parseInt(ele.val() || 0, 10); var level2 = parseInt(ele.siblings(".form-control").val() || 0, 10); var total = level1 * level2; ele.closest(".form-group").next().find(".riz").val(total); ele.closest(".form-group").next().find(".riz").attr("disabled", true); }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> <div class="form-group"> <select class="form-control"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <select class="form-control"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <div class="form-group"> <input class="riz"> </div> <hr> <div class="form-group"> <select class="form-control"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <select class="form-control"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <div class="form-group"> <input class="riz"> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM