สอบถามการ sum ค่าหลายแถวแบบมีเงื่อนไข

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามการ sum ค่าหลายแถวแบบมีเงื่อนไข

สอบถามการ sum ค่าหลายแถวแบบมีเงื่อนไข


สิ่งที่ต้องการคือ เมื่อ user คีย์จำนวนไร่ งาน วา ในแต่ละแถวแล้วให้ระบบแสดงผล sum ด้านล่างให้อัตโนมัติ (ถ้าเป็นการ sum ข้อมูลปกติครับ ทำได้อยู่ครับ) เนื่องจากข้อมูลตามตัวอย่างเป็นข้อมูลที่ดิน ซึ่งต้อง sum แบบมีเงื่อนไขเฉพาะในรูปแบบของที่ดิน ที่คิดได้คือตอน user keyup ต้องทำหน่วยให้เป็นตารางวาทั้งหมด (1 ไร่ = 400 ตารางวา | 1 งาน = 100 ตารางวา) แล้วค่อยแปลงตารางวากลับเป็นจำนวนไร่ งาน ตารางวา โดยการหารเอาเศษ (mod) ใส่ในแถว sum ด้านล่าง แต่เขียนใน jquery ไม่ถูกครับ

รบกวนขอคำแนะนำหรือตัวอย่างหน่อยครับ ขอบคุณครับ


Hardalways 06-05-2022 10:41:00

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
แนวทางการ sum ข้อมูล

  <div>
    <input class="area set_area1">
    <input class="area set_area2">
    <input class="area set_area3">
  </div> 
  <div>
    <input class="area set_area1">
    <input class="area set_area2">
    <input class="area set_area3">
  </div>  
  <hr>
  <div>
    <input class="sum_area1" readonly>
    <input class="sum_area2" readonly>
    <input class="sum_area3" readonly>
  </div>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script>

  $(".area").on("keyup",function(){
    var a1 = 0;
    var a2 = 0;
    var a3 = 0;
    $(".set_area1").each(function(i,j){
      a1 += isNaN(parseInt($(j).val()))?0:parseInt($(j).val());
      a2 += isNaN(parseInt($(".set_area2:eq("+i+")").val()))?0:parseInt($(".set_area2:eq("+i+")").val());
      a3 += isNaN(parseInt($(".set_area3:eq("+i+")").val()))?0:parseInt($(".set_area3:eq("+i+")").val());
      if(i==$(".set_area1").length-1){
        $(".sum_area1").val(a1);
        $(".sum_area2").val(a2);
        $(".sum_area3").val(a3);
      }
    });
  });
</script>  


>>>  อัพเดท >>> 07-05-2022
------------------------------------------
ถ้าต้องคำนวณเพิ่มเติมสำหรับค่า ไร่ งาน และตารางวา ให้แทรก
การคำนวณ เช้าไป ก่อนที่นำค่าไปแสดง เป็นประมาณนี้

      if(i==$(".set_area1").length-1){
        a2 += (a3>=100)?Math.floor(a3/100):0; // ใช้ค่าจากตารางวา
        a3 = a3%100; // หาตารางวา
        a1 += (a2>=4)?Math.floor(a2/4):0; // ใช้ค่าจากงาน
        a2 = a2%4; // หางาน
        $(".sum_area1").val(a1);
        $(".sum_area2").val(a2);
        $(".sum_area3").val(a3);
      }

ตัวอย่าง DEMO

ninenik 07-05-2022
 ความคิดเห็นที่ 2
ทำได้แล้วนะครับ ขอบคุณสำหรับการช่วยเหลือมาก ๆ ครับ


hardalways 08-05-2022 01:54






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ