รับค่าตัวเลขทศนิยม

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

รับค่าตัวเลขทศนิยม
<form name="frmMain" action="" method="post">
<script language="JavaScript">
function sum() {
    var result=0;
var result1=0;
    var txtFirstNumberValue = document.getElementById('txt1').value;
    if (txtFirstNumberValue !="" && txtFirstNumberValue < 20){
        result = 0;
    }else if ( txtFirstNumberValue > 20){
        result = parseFloat(txtFirstNumberValue) - 20;
document.getElementById('txt1').value = 20.00;
    }
       if (!isNaN(result)) {
           document.getElementById('txt2').value = result.toFixed(2);
       }
   }
</script>
<input type="text" id="txt1"  onkeyup="sum();" size="10" maxlength="5" />
<input type="text" id="txt2" readonly size="10"/>
</form>

ช่วยหน่อยครับคุณนิค คือจะให้รับค่าตัวเลขทศนิยม ถ้าเกิน 20.00 ให้ txt1 = 20.00 พอใส่มากกว่า 20.00 มันเพี้ยน 


Suthon77 15-04-2017 17:49:10

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

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


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


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

 ความคิดเห็นที่ 1
ตอนรับค่าเข้าไป ค่ายังไม่ใช่ ประเภท number หรือเป็นตัวเลข น่าจะลืมแปลงค่าก่อนเอาไปเทียบ

var txtFirstNumberValue = document.getElementById('txt1').value;
   txtFirstNumberValue = parseFloat(txtFirstNumberValue);



ninenik 15-04-2017
 ความคิดเห็นที่ 2
<script language="JavaScript">
function sum() {
    var result=0;
var txtFirstNumberValue = document.getElementById('txt1').value;
   txtFirstNumberValue = parseFloat(txtFirstNumberValue);
       if (txtFirstNumberValue !="" && txtFirstNumberValue < 20){
        result = 0;
    }else if ( txtFirstNumberValue > 20){
        result = parseFloat(txtFirstNumberValue) - 20;
document.getElementById('txt1').value = 20;
    }
       if (!isNaN(result)) {
           document.getElementById('txt2').value = result.toFixed(2);
       }
   }
</script>

ลองเอาไปใส่ มันจะคำนวณได้ในครั้งแรก แต่พอแก้ตัวเลขใหม่ มันก้จะเพี้ยนอีก 555 มึนตึ้บ


suthon77 15-04-2017 19:30
 ความคิดเห็นที่ 3
<html>
    <head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
 
 
<input name="value1" type="text" id="textone" size="10" maxlength="5">
<input name="result" type="text" id="result" size="10" readonly>
 
<script>
    $('#textone').keyup(function(){
        var textone;
       // var texttwo;
        textone = parseFloat($('#textone').val());
       // texttwo = parseFloat($('#texttwo').val());
  if(textone > 20){
  //$('#result').val(0);
 
var result = textone - 20;
$('#result').val(result.toFixed(2));
//$('#textone').val(textone - result.toFixed(2));
 
}
 
    });
</script>
    </body>
    </html>
อันนี้ ก้เซตค่าเท้กบ้อกตัวแรกไม่ถูก พอป้อนเกิน 20


suthon77 15-04-2017 19:37
 ความคิดเห็นที่ 4
ไม่แน่ใจว่าทำอะไรน่ะ ลองเข้าไปดูตามตัวอย่างที่อัพเดทนี้ดู ด้านล่าง ในเนื้อหาเพิ่มเติม

เทคนิค หน่วงเวลา กับ event keyup ด้วย jQuery 
https://www.ninenik.com/content.php?arti_id=409 via @ninenik

การใช้ event keyup ถ้าใช้ค่าสุดท้าย หลังจากเคาะแป้นข้อมูลตัวสุดท้าย แล้วค่อยเอาค่ามาใช้งาน
ให้ใช้วิธีการหน่วงหรือ delay การนำข้อมูลไปใช้ อีกอย่างเวลาใช้งาน อาจจะลองตรวจสอบค่าในหลายๆ อย่าง
เช่น ถ้ากรอกไปไม่ใช่ตัวเลขให้รีเซ็ตค่า แบบนั้นเป็นต้น และก็เงื่อนไข การใช้ if เงื่อนไขต้องให้ครอบคลุม
ตัวอย่างที่ถามมีแค่ <20 และ >20 เงื่อนไขกรณีเท่ากับ 20 หายไป อันนี้ถ้าลืม ก็ทำให้โค้ดทำงานไม่ถูกต้องได้

 


ninenik 15-04-2017
 ความคิดเห็นที่ 5
ทำได้แล้วครับ ใช้แนวทางนี้เลย ขอบคุณมากครับผม


suthon77 17-04-2017 13:58
1






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