ช่วยดูให้หน่อยนะครับ เกี่ยวกับเรื่อง ของ radio ที่ส่งค่าโดย javacript
ข้อมูลที่ส่งไปเป็นอย่างไรครับที่คุณบอกว่ามันส่งไปทั้งหมดอ่ะครับ
ใช้ firebug หรือเปล่ามันจะมีเช็คค่าที่ส่งไปให้ลองเอามาให้ดูหน่อยครับ
Date :
2010-06-28 10:44:09
By :
oxygenyoyo
จาก code จะเห็นว่าผม มี radio อยู่ประมาณ 4 อันนะครับ ผมก็ได้ เขียน code เพื่อเช็คค่า radio ว่าอันไหนเช็คหรือไม่เช็ค แล้วถ้าค่าไหนถูกเช็ค ก็เลือก radio นั้นส่งไป แต่นี้ดันส่งไปทั้ง สี่ radio เลยครับ ผมเลยงงว่า ทำไม ถึงไม่ยอมส่งเฉพาะ ค่าที่ถูกเลือกเท่านั้นอะครับ ช่วยทีนะครับ
Date :
2010-06-28 11:30:09
By :
SOUL
ฟังก์ชั่น ck_frm() ไม่เห็นเอามาให้ดูเลยครับ
แล้วผมถามคุณว่าคุณรู้ได้อย่างไรว่าค่าที่ส่งไปเป็นอย่างไรรบกวนเอามาให้ดูหน่อย
คุณรู้จัก firebug หรือเปล่าถ้าไม่รู้จักลองไปหามาใช้ดูเป็น add-on ของ Firefox
แล้วจะเข้าใจสิ่งที่ผมถามคุณนะ
Date :
2010-06-28 11:49:39
By :
oxygenyoyo
อ้อผมเข้าใจครับ ผมใช้ครับ fribug อะ
อันนี้เป็น
ผมไม่แน่ใจนะครับว่าผมเขียนถูกหรือป่าวครับ ช่วยดูให้หน่อยนะครับ รบกวนด้วยครับ
Code (PHP)
//เช็คค่า ว่าได้ทำการ เลือก redio หรือป่าว ถ้าไม่ได้เลือกให้แสดงข้อความแสดง
var Equipment=document.getElementById('Equipment');
var Chemical=document.getElementById('Chemical');
var Ebzyme=document.getElementById('Ebzyme');
if (Equipment.checked) {Order_Type = Equipment.value;}
else if (Chemical.checked) {
Order_type = Chemical.value;
} else if (Ebzyme.checked) {
Order_type = Ebzyme.value;
} else {
alert ("กรุณาเลือก Order Type ! ")
}
alert (Order_type);
req.onreadystatechange = function(){
if(req.readyState == 4){
if(req.status == 200){
}
}
}
///*******************************************
Date :
2010-06-28 13:06:47
By :
SOUL
1. ใช้ firebug เช็คค่า post ที่มันส่งไปครับว่า มีอะไรบ้าง ดูที่ post ที่มันส่งออกไป ครับ หรือจะลอง ให้มัน response คืนมาก็ได้ครับว่าได้อะไรครับ เช่น print_r($_POST)
//เช็คค่า ว่าได้ทำการ เลือก redio หรือป่าว ถ้าไม่ได้เลือกให้แสดงข้อความแสดง
ในเมื่อ เงือนไขของคุณบอกแล้ว ต้องเช็ค 1 อัน ไม่เช็คไม่ได้
ใส่ checked="checked" ที่ตัวแรกสิ
<input type="radio" checked="checked" value="Equipment" name="Order_type" id="Equipment" />
เช็คตัวแรก เป็น Default ไปเลย ถ้าไม่เลือกก็ได้ค่าแรกไป จะได้ตัดปัญหา ว่าเขาจะเช็คหรือไม่เช็ค ถ้า user ไม่เช็ค ฉันจะเอา Default นะ ก็ว่ากันไป
จาก code จะเห็นว่าผม มี radio อยู่ประมาณ 4 อันนะครับ ผมก็ได้ เขียน code เพื่อเช็คค่า radio ว่าอันไหนเช็คหรือไม่เช็ค แล้วถ้าค่าไหนถูกเช็ค ก็เลือก radio นั้นส่งไป แต่นี้ดันส่งไปทั้ง สี่ radio เลยครับ ผมเลยงงว่า ทำไม ถึงไม่ยอมส่งเฉพาะ ค่าที่ถูกเลือกเท่านั้นอะครับ ช่วยทีนะครับ
ตรงนี้ ก็ในเมื่อ querystring ที่คุณส่งไป
"&tEquipment=" + encodeURI( document.getElementById("Equipment").value ) +
"&tChemical=" + encodeURI( document.getElementById("Chemical").value ) +
"&tEbzyme=" + encodeURI( document.getElementById("Ebzyme").value ) +
"&tOther=" + encodeURI( document.getElementById("txtOther").value ) +
ตรงนี้คุณกำหนดเองนิครับว่าให้เอาทุกค่าไป มันต้องได้ 4 ค่าอยู่แล้วนิครับ ถูกไหม ?
Radio เป็นการเลือกค่า ๆ เดียวจาก Group Field ครับ
มันจะไม่ซ้ำกัน ตรง Attr name ครับ ต่อให้มี เป็นร้อยเป็นพัน radio แต่ attr name เดียวกัน มันก็จะ unchecked ทุก name ที่เหมือนกับตัวที่เราคลิ๊กออกหมด
ไม่เหมือนกับ checkbox ที่เลือกได้หลายค่า ดังนั้น checkbox ในการส่งเราจะนิยมส่งเป็น Array
แต่ radio มีหนึ่งเท่านั้น
ดังนั้งในตอน ที่เราสร้าง querysting ลอง ถ้าจะให้ถูกหลัก เปลี่ยนมาใช้ document.getElementByNames("Order_type")[0] การทำแบบนี้ต้องระบุ ตำแหน่งของ name อีกว่าตำแหน่งที่เท่าไร ซึ่งเราก็ไม่รู้อีกต้องวนลูปอีก แล้วก็เช็ค attr ว่าตัวไหน check แล้วเอาค่านั้นมาเป็น value ยากได้อีก
ลองเปลี่ยนเป็น myform.Order_type.value ดูไหม ง่ายที่สุด
คือ myform คือ name ของ form
<form name="myform">
Order_type คือ name ของ input ต่างๆ ใน form
.value คือค่า ของ input ตัวนั้น ที่มีการ checked จบ
ปล เราจะใช้ document.getElement ต่าง ๆ เพื่อใช้การเข้าถึงข้อมูลครับ เช่น อยากให้ตัวเปิดปิด หรือทำอะไรกับมัน
ถ้าอยากทำ query string แนะนำให้ใช้ form.name.value ดีกว่าครับ
ปล อีก ถ้ามีเวลาซักนิด ลองหา javascript framework มาใช้หนอ่ยครับ
ถ้าเจอ field มาก ๆ อาจจะเป็นลมได้ ไหนจะส่ง name ส่ง value มีผิดแน่ ๆ ถ้าเยอะ ๆ
เราสามารถใช้ $('#myform').serialize() มันจะนำค่าทั้งหมดมาอยู่ใน รูปแบบของ query string ได้อย่างอัติโนมัติ
ลดการผิดพลาด เนื่องจากเอา name ไม่ครบ หรือไม่ถูกต้อง ความชัวมันมีมากกว่าเยอะครับ ความถูกต้องแทบจะร้อยเปอร์เซ็น
ขออภัย ถ้าต้องเขียนยาว ๆ เพราะว่าอยากให้เข้าใจ concept ด้วยครับผม
จะได้ต่อยอดที่หลังได้
ถ้าผิดพลาดประการได้ แย้งได้เลยครับผม ยินดีครับ ฟัง
Date :
2010-06-30 01:29:51
By :
orion
เหมือน script นี้จะ error นะคะเนี่ย ยังไม่ได้ตอบคำถามนะคะ แต่ดู ๆ แล้ว ไม่น่าจะทำงานได้เท่านั้นค่ะ
ถ้าเข้าใจผิดก็ต้องขออภัยค่ะ
Date :
2010-06-30 09:01:49
By :
ultrasiam
ขอบคุณครับ ผมแก้เสร็จแล้วแหละครับ
Date :
2010-06-30 09:08:02
By :
SOUL
แนะนำให้ทำตามที่คุณ Guest:orion ว่ามาในเรื่องของ radio ค่ะ
เพิ่มเติมคือ น่าจะเช็คค่าก่อน กำหนด parameter >> var pmeters นะคะ
ได้ค่าที่แน่นอน ถูกต้องแล้ว จึงกำหนดค่าให้ var pmeters
และ ใช้ document.getElement ต่าง ๆ น่าจะปลอดภัยกว่า myform.Order_type.value
ถ้าจำไม่ผิด myform.Order_type.value ใช้กับ Firefox ไม่ได้
Ps.ถ้าเข้าใจอะไรผิดต้องขออภัยด้วยค่ะ
Date :
2010-06-30 09:09:13
By :
ultrasiam
Load balance : Server 02