Sat 26 Nov 2005 10:35:06
อันนี้เป็น Project ที่จะจบนะครับไม่ผ่านก็คงไม่จบ*กรุณาช่วยผมหน่อยนะครับ*(งานเปรียบเทียบปรับของตำรวจจราจรนะครับ)
คืออย่างนี้นะครับ
ตอนนี้ผมกำลังจะออกใบสั่งให้ผู้ที่กระทำความผิดกฏจราจรนะครับและมีข้อมูลตามใบสั่งดังนึ้ครับ คราว ๆ นะครับ(บันทึกลงฐานข้อมูลนะครับ)
1ข้อมูลผู้กระทำความผิด
-เลขประจำตัว
-ชื่อ
-ที่อยู่
2.ข้อมูลรถกระทำความผิด
-ประเภทรถ
-ยี่ห้อ
-ป้ายทะเบียน
3สถานที่เกิดเหตุ
-ถนน
-อำเภอ
-จังหวัด
-วันเวลาเกิดเหตุ
4ข้อหาที่ทำความผิด
-ข้อหา
-ค่าปรับ
-ตัดแต้ม
ตอนนี้ผมแบ่งช่องในการกรอกข้อมูลต่างๆเหล่านี้อยู่หน้าเดียวนะครับ
ที่ผมอยากจะถามคือ เวลาที่ผมเลือกข้อหากระทำความผิด(4)ผมจะมี comboboxให้เลือกแล้วแสดงข้อมูลต่างๆออกมาทาง TextFile เมื่อเลือกจาก combobox เสร็จก็ให้แล้วคลิกที่ ปุ่มเลือก ก็ให้มันแสดงข้อหาต่างๆ ข้างล่างนะครับ หรือไม่ถ้าไม่เลือกก็ให้ป้อนข้อมูลลงใน TextFile ได้เลย แล้วแสดงข้อมูลที่ป้อนด้านล่าง (คล้ายกับที่เรา post นะครับ ใส่ข้อมูลแล้วก็แสดงออกในหน้าเดียวกันนะครับ)
ขอความช่วยเหลือแค่นี้ก่อนนะครับแล้วถ้าติดอารัยผมจะมา post ต่อ
ลองนำไปประยุกต์ดูนะครับ
<script language="javascript">
function fillform(obj){
var theform = obj.form;
if(obj.value != "0"){
theform.pent_name.value = "";
theform.pent_fine.value = "";
theform.pent_deduct = "";
switch(obj.value){
case "1":
{
theform.pent_name.value = "ฝ่าฝืนกฎจราจร";
theform.pent_fine.value = "400";
theform.pent_deduct = "10";
}
break;
case "2":
{
theform.pent_name.value = "ขับขี่โดยประมาท";
theform.pent_fine.value = "1000";
theform.pent_deduct = "15";
}
break;
case "3":
{
theform.pent_name.value = "ขับขี่โดยประมาท";
theform.pent_fine.value = "1000";
theform.pent_deduct = "20";
}
break;
}
}
}
</script>
<form action="...." method="post">
<select name="penalty" onchange="fillform(this)">
<option value="0">Please select</option>
<option value="1">ฝ่าไฟแดง</option>
<option value="2">ไม่คาดเข็มขัดนิรภัย</option>
<option value="3">ไม่สวมหมวกกันน็อค</option>
</select>
<input type="text" name="pent_name">
<input type="text" name="pent_fine">
<input type="text" name="pent_deduct">
</form>
จากโค๊ดข้างบนนะครับ
เมื่อมีการ เปลี่ยนแปลงค่าใน combobox แล้วจะมีการเรียกใช้งาน function fillform โดยการทำงานเริ่มจากว่า เช็คว่าค่าของ combobox ไม่เป็น 0 คือมีการเลือกไปที่ความผิดใดความผิดหนึ่ง แล้วหลังจากนั้นก็ทำการเซ็ทค่า textbox ทั้งหมดให้เป็นค่าว่าง แล้วเริ่มทำการเซ็ทค่า textbox ทั้งหมดเป็นค่าที่ต้องการครับ
Sat 26 Nov 2005 17:12:30
ต่อนะครับ
คือ combobox นี้ผมใช้ดึงข้อมูลมาจากฐานข้อมูลนะครับตาม code ข้างล่างนี้นะครับ
<% set rs1=Conn.execute("SELECT * FROM TblStory")%>
<select name="select7" id="select3">
<%
Do while not rs1.EOF
%>
<option value="<%=trim(rs1("Story_ID"))%>" selected><%=trim(rs1("Story"))%></option>
<%
rs1.movenext
loop
rs1.close
%>
</select>
พอจะมีวิธีหรือป่าวครับคือจากเปลี่ยนเป็นการเลือก case "1" เป็นการเลือกข้อหาที่ทำความผิดจากฐานข้อมูลนะครับ
<script language="javascript">
function .......
......
switch(obj.value){
case "ฝ่าไฟแดง":
{
.........
}
break;
}
......
}
</script>
ส่วนใน select ก็ใส่ค่า เช่น
<select name .......>
<option value="0">Please select</option>
<option value="ฝ่าไฟแดง">ฝ่าไฟแดง</option>
.......
</select>
ลองประยุกต์ดูนะครับ
Sun 27 Nov 2005 20:08:22
ผมรู้ได้ยังงัยครับว่าเรากำลังเลือกอะไรอยู่เพราะว่าค่าใน combobox มันทำการวน loop โดยใช้ id
<option value="<%=trim(rs1("Story_ID"))%>" selected><%=trim(rs1("Story"))%></option>
<option> นั้นค่าที่ถูกส่งไปจะถูกส่งไปในรูปแบบ string
จาก reply 1 นั้นผมก็ส่งค่าเป็นตัวเลข แต่ javascript จะเห็นเป็น string เช่นกัน
จาก reply 3 นั้นผมส่งค่าเป็น string แน่นอนว่า javascript ก็เห็นเป็น string เช่นกัน
จุดที่คุณถามว่าถ้าคุณอ้างค่าจาก id นั้นจะรู้ได้ยังไง อันนี้คุณต้องลองหาวิธี map ค่าทั้งสองดูครับ
การที่จะทำระบบ dynamic form ด้วย javascript แบบนี้นั้น มีวิธีคร่าวๆดังนี้ครับ
- ทำการ select ข้อมูลแล้วนำมาจัดเรียงในลักษณะ function ในส่วนของ javascript
- ทำการ select ข้อมูลแล้วนำมาใส่ใน combobox
Tue 29 Nov 2005 22:36:06
ครับผม...........ผมลองเอา Souce code จาก reply 1 มาแล้วลอง run ดู มัน Error ครับ คือเวลาที่เราเลือกข้อมูลใน combobox แล้ว ข้อมูลไม่ขึ้นใน TextField นะครับ ช่วยลองดูให้ผมหน่อยนะครับ ไม่รู้จริงๆ ครับ งง
<script language="javascript">
function fillform(obj){
var theform = obj.form;
if(obj.value != "0"){
theform.pent_name.value = "";
theform.pent_fine.value = "";
theform.pent_deduct = "";
switch(obj.value){
case "1":
{
theform.pent_name.value = "ฝ่าฝืนกฎจราจร";
theform.pent_fine.value = "400";
theform.pent_deduct.value = "10";
}
break;
case "2":
{
theform.pent_name.value = "ขับขี่โดยประมาท";
theform.pent_fine.value = "1000";
theform.pent_deduct.value = "15";
}
break;
case "3":
{
theform.pent_name.value = "ขับขี่โดยประมาท";
theform.pent_fine.value = "1000";
theform.pent_deduct.value = "20";
}
break;
}
}
}
</script>
<form action="test.php" method="post">
<select name="penalty" onchange="fillform(this)">
<option value="0">Please select</option>
<option value="1">ฝ่าไฟแดง</option>
<option value="2">ไม่คาดเข็มขัดนิรภัย</option>
<option value="3">ไม่สวมหมวกกันน็อค</option>
</select>
<input type="text" name="pent_name">
<input type="text" name="pent_fine">
<input type="text" name="pent_deduct">
</form>
การทำงานก็เหมือนที่ reply #5 นั่นล่ะครับลองดูนะครับ ไม่ต่างจาก VB เท่าไหร่หรอกครับ
ส่วน
<option value="<%=trim(rs1("Story_ID"))%>" selected><%=trim(rs1("Story"))%></option>
attribute selected นั้นเป็นการบ่งบอกว่าให้ option นั้นๆถูกเลือกเป็นค่า default ซึ่ง combobox นั้นเป็นไปไม่ได้ที่จะมีตัวที่ถูกเลือกมากกว่า 1 ครับ

















