จากกระทู้นี้ http://www.blognone.com/node/10459 นะครับ ผมคิดว่า คงไม่มีใครเข้ามาตอบแล้ว จึงขออนุญาตตั้งกระทู้ใหม่นะครับ
เรื่องก็คือ ทำระบบเกี่ยวกับบันทึกเวลา เขียนฟังชั่น calculate เป็น JavaScript ไว้ แต่ไม่ได้มีการดัก error ซึ่งก็คือ ตามความจริงเวลามีแค่ 0.00 - 24.00 น. แต่ระบบที่ทำขึ้น ใส่ 25.00 มันก็คำนวนให้ เช่น 22.00 - 25.00 รวมเวลาได้ 3 ชั่วโมง ประมาณนี้ครับ
แต่ทีนี้ ผมได้เพิ่มคำสั่ง if เข้าไปในฟังชั่น calculate ไว้ ว่า
if (start>24) {alert("กรุณากรอกเวลาให้ถูกต้อง")}
if (end>24) {alert("กรุณากรอกเวลาให้ถูกต้อง")}
มันก็จะขึ้น alert ขึ้นมาตามที่ตั้งไว้ แต่ถ้า start=25.00 และ end=27.00 มันจะ alert มา 2 อันเลยครับ...จะทำอย่างไรให้ขึ้น alert แค่อันเดียวพอ ?
และในขณะที่เวลาผิดอยู่อย่างนั้น ถ้ากดปุ่ม save มันก็จะยังคำนวนเวลาต่อไป พร้อมทั้งแสดงข้อความว่า "บันทึกได้" ซึ่งอันนี้ผมเขียนไว้ใน Controller...ตรงนี้จะทำอย่างไร ที่จะหยุดการทำงาน จนกว่าจะกรอกเวลาถูกต้อง ?
มีคำถามที่จะถามเท่านี้ครับ ท่านใดที่พอมีแนวทาง ขอรบกวนด้วยนะครับ ^_^
แบบนี้จะไม่สามารถกำหนดได้ว่าให้แจ้งว่าอันไหน Error
if (start > 24 || end > 24) {
alert("arh...")
// เด้งกลับ
return
}
// ให้เซฟได้
doSave()
ไม่ก็อันนี้ กำหนดได้ แต่ถ้าผิดทั้งสอง จะเตือนอันแรก แค่ครั้งเดียว
if (start > 24) {
alert("arh...")
// เด้งกลับ
return
} else if(end > 24) {
alert("oh...")
// เด้งกลับ
return
}
// ให้เซฟได้
doSave()
หรือไม่ก็อันนี้ดีที่สุด
var errorCount = 0
var errorMsg = ""
if (start > 24) {
errorMsg = errorMsg + "Start time exceed\n"
errorCount++
}
if(end > 24) {
errorMsg = errorMsg + "End time exceed\n"
errorCount++
}
if (errorCount) {
alert("Please fix error before continue:\n" + errorMsg)
} else {
// ให้เซฟได้
doSave()
}
ไม่รู้ถูกเปล่า น่าจะประมาณนี้
อารมณ์นี้ป่าวหว่า (ผมไม่เคยใช้ ruby ง่ะ)
if (starttime > 24) or (endtime > 24) then
{
เตือนว่าใส่ผิด
กลับไปใส่เวลาใหม่
}
else
{
คำนวณเวลาและบันทึก
แสดงข้อความว่า "บันทึกได้"
}
___________
[pawinpawin](http://pawinpawin.googlepages.com/)
ตามคอมเม้นของคุณ anu ผมได้ลองแล้วครับ ปรากฏว่า ปรากฏว่าเป็นตามที่ต้องการ และฟังชั่น calculate ไม่คิดให้ครับ
แต่ส่วนการกปุ่ม บันทึก ผมเขียนเป็นแบบ OnClick << คือถ้ากดปุ่มนี้ มันต้องขึ้นข้อความ "บันทึกได้" แต่ก็จะมี alert ขึ้นมาก่อน และต้องแก้ไขให้ถูกต้อง ถึงจะกดบันทึกได้ << ชอบมากเลย
สรุปว่าทำงานได้ดีครับ ขอบคุณสำหรับทุก ๆ คอมเม้นนะครับ
เพิ่งรู้ว่า validate ผ่านทาง javascript ด้วย นึกว่าจะ validate ผ่านทาง model อย่างเดียว ^^"
ถึงจะ validate ผ่าน js แล้ว แต่อย่าลืมทำ validation ที่ model ด้วยนะครับ เพราะอย่าลืมว่าคนสามารถ bypass javascript validation กันได้อย่างง่ายๆ เลย เดี๋ยว program จะ break เอา :)
ปล. ไม่ได้ follow up กระทู้เลย เพิ่งเห็น ต้องขออภัยด้วยนะครับ ^^"
บล็อกของผม: http://sikachu.com
บล็อกของผม: http://sikachu.com
ขอบคุณ คุณพี่ Sikachu ด้วยนะครับ
ยกให้เป็น ROR Expert ประจำใจให้เลยนะครับ ^_^
ไม่ทราบว่าคุณพี่เล่น MSN Yahoo GTalk หรือเปล่าครับ อยากขอแอดเดสไว้คุยด้วยน่ะครับ
papawinny@gmail นี่ของผมนะครับ