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

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
ตอนรับค่าเข้าไป ค่ายังไม่ใช่ ประเภท number หรือเป็นตัวเลข น่าจะลืมแปลงค่าก่อนเอาไปเทียบ
1 2 | var txtFirstNumberValue = document.getElementById( 'txt1' ).value; txtFirstNumberValue = parseFloat(txtFirstNumberValue); |

ความคิดเห็นที่
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 มึนตึ้บ
ลองเอาไปใส่ มันจะคำนวณได้ในครั้งแรก แต่พอแก้ตัวเลขใหม่ มันก้จะเพี้ยนอีก 555 มึนตึ้บ

ความคิดเห็นที่
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
อันนี้ ก้เซตค่าเท้กบ้อกตัวแรกไม่ถูก พอป้อนเกิน 20

ความคิดเห็นที่
4
ไม่แน่ใจว่าทำอะไรน่ะ ลองเข้าไปดูตามตัวอย่างที่อัพเดทนี้ดู ด้านล่าง ในเนื้อหาเพิ่มเติม
เทคนิค หน่วงเวลา กับ event keyup ด้วย jQuery
https://www.ninenik.com/content.php?arti_id=409 via @ninenik
การใช้ event keyup ถ้าใช้ค่าสุดท้าย หลังจากเคาะแป้นข้อมูลตัวสุดท้าย แล้วค่อยเอาค่ามาใช้งาน
ให้ใช้วิธีการหน่วงหรือ delay การนำข้อมูลไปใช้ อีกอย่างเวลาใช้งาน อาจจะลองตรวจสอบค่าในหลายๆ อย่าง
เช่น ถ้ากรอกไปไม่ใช่ตัวเลขให้รีเซ็ตค่า แบบนั้นเป็นต้น และก็เงื่อนไข การใช้ if เงื่อนไขต้องให้ครอบคลุม
ตัวอย่างที่ถามมีแค่ <20 และ >20 เงื่อนไขกรณีเท่ากับ 20 หายไป อันนี้ถ้าลืม ก็ทำให้โค้ดทำงานไม่ถูกต้องได้
การใช้ event keyup ถ้าใช้ค่าสุดท้าย หลังจากเคาะแป้นข้อมูลตัวสุดท้าย แล้วค่อยเอาค่ามาใช้งาน
ให้ใช้วิธีการหน่วงหรือ delay การนำข้อมูลไปใช้ อีกอย่างเวลาใช้งาน อาจจะลองตรวจสอบค่าในหลายๆ อย่าง
เช่น ถ้ากรอกไปไม่ใช่ตัวเลขให้รีเซ็ตค่า แบบนั้นเป็นต้น และก็เงื่อนไข การใช้ if เงื่อนไขต้องให้ครอบคลุม
ตัวอย่างที่ถามมีแค่ <20 และ >20 เงื่อนไขกรณีเท่ากับ 20 หายไป อันนี้ถ้าลืม ก็ทำให้โค้ดทำงานไม่ถูกต้องได้

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

ขอบคุณทุกการสนับสนุน
![]()