สวัสดีเพื่อนๆ ช่วงนี้ทำงานหลายอย่าง ไม่มีเวลาเข้ามาเขียนอะไรเลย รอบนี้เอาสั้นๆ ละกันเนอะ
ตอนนี้ผมก็เขียนเว็บที่มีตัวเลขมาเกี่ยวข้องนิดหน่อย จริงๆ แล้วก็ไม่ค่อยถูกกับตัวเลขเท่าไหร่หรอก แต่ในเมื่อเขาขอมาผมก็จัดไป (แต่ก็ยังไม่ 100% ซะที)
เพื่อนที่เคยเขียนเว็บมาคงมีปัญหาตัวเลขกับ Javascript กันมาพอสมควร ผมขอยกตัวอย่างง่ายๆ ที่เจอกันบ่อยๆ นะครับ
1. ช่องใน textbox เป็นค่าว่าง แล้วพอนำไปคำนวนตัวเลข จะกลายเป็น NaN (Not a Number) ซะ ทำให้ค่าที่ออกมาผิดไปหมดเลย วิธีการแก้ปัญหาก็แสนจะง่ายคือ เอาค่าไป OR กับ 0 (ศูนย์) ซะ แค่นี้ก็แก้ปัญหาได้แล้ว ตัวอย่างโค๊ดก็แบบนี้
var number = parseFloat(jQuery("#number").val());
// แบบนี้ ถ้าหากเป็นค่าว่าง จะมีปัญหา NaN ก็แก้แบบนี้ซะ
var number1 = parseFloat(jQuery("#number1").val()) || 0;
// แบบนี้ ถ้าเป็นค่าว่างก็จะกลายเป็น 0 แทน เท่านี้ก็แก้ปัญหาได้แล้ว
2. ทศนิยมใน Javascript มันเพี้ยน หรือต้องการทศนิยมแค่ 2 ตำแหน่ง ไม่ยากเลย ใช้คำสั่ง toFixed() ซะ แค่นี้ก็จะแสดงทศนิยมตามที่ต้องการได้แล้ว ตัวอย่างเช่น
var number = 123.456789;
alert(number); // แสดงผล 123.456789
alert(number.toFixed(2)); // แสดงผลแค่ 123.45
3. ป้อนข้อมูลเข้ามามีเครื่องหมาย , ด้วย แต่ตอนที่เอาไปคำนวนต้องตัด , ออกไปก่อน บางที user ไม่อยากแก้ (ขี้เกียจ) หรืออาจจะไม่ทันได้แก้ หลงลืมได้ ไม่ว่ากัน เราก็เขียนกันไว้ก่อนซะ ง่ายๆ เลย ใช้ regular expression ซะ แค่นี้เราก็ตัดเครื่องหมาย , ออกได้แล้ว ผมเขียนเป็น function ใหม่ละกัน ไม่ต้องไปสร้างเป็น prototype ให้มันยุ่งยากเนอะ
function makeNumber(obj) {
jQuery("#"+obj.id).val(obj.value.replace(/[,]/g,""));
}
<input type=”text” name=”number” id=”number” value=”0″ onChange=”makeNumber(this);”>
อ่าเอาแค่นี้ก่อนละกัน ยิ่งเขียนยิ่งรั่วแหละ เดี๋ยวเคลียงานเสร็จแล้วจะมาแก้ไขให้ดูดีกว่านี้ละกันครับ แล้วเจอกันใหม่ 🙂