Tags:
Forums: 

จากกระทู้นี้ 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...ตรงนี้จะทำอย่างไร ที่จะหยุดการทำงาน จนกว่าจะกรอกเวลาถูกต้อง ?

มีคำถามที่จะถามเท่านี้ครับ ท่านใดที่พอมีแนวทาง ขอรบกวนด้วยนะครับ ^_^

Get latest news from Blognone
By: anu
Contributor
on 27 January 2009 - 19:07 #82647

แบบนี้จะไม่สามารถกำหนดได้ว่าให้แจ้งว่าอันไหน 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()
}

ไม่รู้ถูกเปล่า น่าจะประมาณนี้

By: pawinpawin
Writer
on 27 January 2009 - 19:09 #82648

อารมณ์นี้ป่าวหว่า (ผมไม่เคยใช้ ruby ง่ะ)

if (starttime > 24) or (endtime > 24) then
{
เตือนว่าใส่ผิด
กลับไปใส่เวลาใหม่
}
else
{
คำนวณเวลาและบันทึก
แสดงข้อความว่า "บันทึกได้"
}



___________
[pawinpawin](http://pawinpawin.googlepages.com/)

By: poloman on 27 January 2009 - 19:52 #82651

ตามคอมเม้นของคุณ anu ผมได้ลองแล้วครับ ปรากฏว่า ปรากฏว่าเป็นตามที่ต้องการ และฟังชั่น calculate ไม่คิดให้ครับ

แต่ส่วนการกปุ่ม บันทึก ผมเขียนเป็นแบบ OnClick << คือถ้ากดปุ่มนี้ มันต้องขึ้นข้อความ "บันทึกได้" แต่ก็จะมี alert ขึ้นมาก่อน และต้องแก้ไขให้ถูกต้อง ถึงจะกดบันทึกได้ << ชอบมากเลย

สรุปว่าทำงานได้ดีครับ ขอบคุณสำหรับทุก ๆ คอมเม้นนะครับ

By: Sikachu
ContributoriPhoneIn Love
on 30 January 2009 - 08:35 #83104
Sikachu's picture

เพิ่งรู้ว่า validate ผ่านทาง javascript ด้วย นึกว่าจะ validate ผ่านทาง model อย่างเดียว ^^"

ถึงจะ validate ผ่าน js แล้ว แต่อย่าลืมทำ validation ที่ model ด้วยนะครับ เพราะอย่าลืมว่าคนสามารถ bypass javascript validation กันได้อย่างง่ายๆ เลย เดี๋ยว program จะ break เอา :)

ปล. ไม่ได้ follow up กระทู้เลย เพิ่งเห็น ต้องขออภัยด้วยนะครับ ^^"

บล็อกของผม: http://sikachu.com


บล็อกของผม: http://sikachu.com

By: poloman on 30 January 2009 - 20:46 #83239

ขอบคุณ คุณพี่ Sikachu ด้วยนะครับ

ยกให้เป็น ROR Expert ประจำใจให้เลยนะครับ ^_^

ไม่ทราบว่าคุณพี่เล่น MSN Yahoo GTalk หรือเปล่าครับ อยากขอแอดเดสไว้คุยด้วยน่ะครับ

papawinny@gmail นี่ของผมนะครับ