พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
Javascript development / radiobutton กับ combobox
bit69
bit69
Sat 10 Dec 2005 10:06:48

สมมุติว่าผมมี radiobutton อยู่ 2 อัน เวลาที่ผมเลือก radiobutton อันใดอันหนึ่งแล้วจะสั่งให้ combobox นั้นไม่สามารถทำงานได้ Disible นะครับ หรือถ้าหากผมเลือกข้อมูลอันใดอันหนึ่งจาก combobox แล้วจะสั่งให้ radiobutton นั้นไม่สามารถทำงานได้ ไม่ทราบว่าจะต้องทำอย่างไรครับ ช่วยหน่อยครับ

Administrator
Sat 10 Dec 2005 13:36:57
<script language="javascript">
function enabledcombo(obj){
    var theform = obj.form;
    if(obj.value=="enabled"){
       theform.combo1.disabled = false;
    }else if(obj.value=="disabled"){
       theform.combo1.disabled = true;
    }
}

function enabledradio(obj){
    var theform = obj.form;
    if(obj.value!="0"){
       theform.state[0].disabled = true;
       theform.state[1].disabled = true;
    }
}
</script>

<form action"...">
<input type="radio" name="state" value="enabled" onclick="enabledcombo(this)">Enable <br>
<input type="radio" name="state" value="disabled" onclick="enabledcombo(this)">Disabled <br>

<select name="combo1" onchange="enabledradio(this)">
<option value="0">please select</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</form>

โค๊ดทั้งหมดประมาณนี้ครับ ลองนำไปประยุกต์ดูนะครับ
bit69
bit69
Sat 10 Dec 2005 15:45:32

ขอบคุณมากครับ

bit69
bit69
Sat 10 Dec 2005 21:04:15

ต่ออีกหน่อยนะครับ

คือผมประยุกต์ใช้ไม่เปนนะครับ คือ ผมลองเอา Rediobutton มาใช้ประมาณ 5 อันแล้วลองประยุกต์ใช้กับ soucecode ที่ให้มานะครับ แต่เวลาเราเลือกที่ combobox มันก็ยังดีนะครับ คือ rediobutton นั้นไม่สามารถใช้งานได้

แต่ถ้าผมเลือก rediobutton แล้ว combobox มันกลับยังใช้งานได้อยู่นะครับ หรือว่าผมต้องเปลี่ยนจาก if else มาเป็น switch ครับ ช่วยอีกทีนะครับ

*****************ขอบคุณครับ***************

Administrator
Sat 10 Dec 2005 21:26:58
จากโค๊ดที่ให้ไปส่วนของ radio นั้นผมเพียงเช็กว่าค่าของ radio ที่ส่งมานั้นมีค่าเป็นอะไรครับ ซึ่งค่าต่างๆก็ต้องตรงกับที่ประกาศไว้ใน input ด้วยครับ

ส่วนถ้าใช้ switch ก็สามารถทำได้โดย

switch(obj.value){
    var theform = obj.form;
    case "enabled":
       theform.combo1.disabled = false;
        break;
   
    case "disabled":
       theform.combo1.disabled = true;
        break;
}

ถ้ามีมากกว่านี้ก็ทำการเช็กค่าที่ตรงกับที่ radio จะส่งให้มาเท่านั้นครับ
bit69
bit69
Sun 11 Dec 2005 13:36:29

**********ครับผมได้ครับ*******************

แล้วถ้าหากว่าผมเลือก rediobutton อันใดอันหนึ่ง หรือ เลือกข้อมูลใน combobox อันใดอันหนึ่ง ผมจะให้มันบันทึกลงฐานข้อมูลยังงัยครับ

---------------ข้อมูลของ rediobutton กับข้อมูลใน combobox ในนั้นผมจะนำมาบันทึกลงใน Field เดียวกัน-----------------

เช่น ผมมีตาราง ที่ชื่อว่า MyTbl แล้วมี Field ภายในนั้นคือ

-ID (Pk_OutoNumber)

-MyData

ผมจะบันทึกลงใน MyData นะครับ พอจะมีวิธีหรือป่าวครับ

อีกหน่อยนะครับ ก่อนที่จะบันทึกลงฐานข้อมูลผมต้องทำการเช็คด้วยว่า ผู้ใช้ได้ทำการเลือก rediobutton หรือ combobox หรือยัง ถ้ายังไม่ได้เลือกก็ให้แสดง Messagebox ออกมานะครับ แต่ถ้าเลือกแล้ว ก็ให้ submit ได้เลยนะครับ

***********กรุณาช่วยอีกหน่อยนะครับ จำเปนมาครับ**************

Administrator
Sun 11 Dec 2005 14:50:57
ตอบเรื่องเช็กว่ามีการเลือกหรือยังก่อนนะครับ
ถ้าเช็กก็สามารถเช็กได้โดย
ก่อนอื่นต้องประกาศฟังก์ชั่นที่ใช้ในการ handle ว่า user ทำการกดปุ่ม submit หรือยังด้วย
<form action="..." method="..." onsubmit="return validate_form(this)">
จากข้างบนเมื่อ user ทำการกดปุ่ม submit แล้ว browser จะทำการเรียกใช้งาน function validate_form() โดยมีการส่ง argument เป็น object ของ form เพื่อจะได้ง่ายในการทำงานครับ ส่วน keyword return นั้นใส่เพื่อให้ฟอร์มต้องรอการ return ค่าจากฟังก์ชั่น validate_form() ก่อนว่าเป็น true หรือ false จึงจะทำงานต่อได้ โดยถ้ามีการ return ค่ามาเป็น true นั้น browser ถึงจะทำการส่งค่าไปยังไฟล์ที่ระบุไว้ใน attribute action ครับ

อีกส่วนก็ทำการประกาศ function ไว้ในส่วน header ของเอกสารครับ
<script language="javascript" type="text/javascript">
function validate_form(obj){
    if(!obj.state[0].checked && !obj.state[1].checked && !obj.state[2].checked && !obj.state[3].checked && !obj.state[4].checked && obj.combo1.value=="0"){
       alert("โปรดเลือก radio button หรือ combobox ก่อนครับ");
       return false;
    }
    return true;
}
</script>

จากฟังก์ฃั่นจะเป็นการเช็คค่าของ radio ว่ามีอันใดถูกเลือกบ้างหรือยังและตรวจสอบว่า combobox นั้นมีการเปลี่ยนค่าหรือไม่ (ในที่นี้ค่าที่ให้เริ่มต้นมีค่าเป็น 0 ) ถ้าไม่มีการเลือกใดๆเลยจะทำการ alert ข้อความขึ้นมา และทำการ return false เพื่อให้ form ไม่ทำการส่งค่าไปยังไฟล์ครับ

ส่วนที่ต้องการนำข้อมูลทั้ง 2 ส่วนไปจัดเก็บใน field เดียวกันนั้น ก็อาจจะใช้
<?
$data = "";
if(isset($_POST["state"]) && $_POST["state"] != ""){
    $data = $_POST["state"];
}else if(isset($_POST["combo1"]) && $_POST["combo1"] != ""){
    $data = $_POST["combo1"];
}
?>

ยังไม่ได้ทำการทดลองนะครับ ยังไงคงต้องลอง debug ดูด้วยครับ โค๊ดประมาณนี้ล่ะครับ
bit69
bit69
Sun 11 Dec 2005 22:23:52

ครับตรงส่วนที่เป็น combobox นั้นผมดึงข้อมูลมาจากฐานข้อมูลเพื่อให้ทำการเลือกข้อมูลนะครับ ผมลองดูแล้วนะครับ ตาม soucecode ที่ #6 ส่วนแรกส่วนของการตรวจเช็คค่าเลือกหรือไม่เลือกนั้น มันจะมองว่า combobox นั้น ได้ทำการเลือกแล้วเวลาเราไม่ได้เลือกอะไรมันจะสามารถ Submit ได้นะครับ

*****แต่ถ้าหากว่าเราไม่ดึงข้อมูลมาแสดงใน Combobox นั้นนะครับ กำหนดค่าตายตัวให้กับ Combobox นั้นเลย มันก็จะทำการตรวจเช็คและก็แสงด Messagebox ออกมา แต่ถ้าดึงข้อมูลมาจากฐานข้อมูลมาแสดงเพื่อให้เลือกใน Combobox มันจะไม่เช็คนะครับ Submit ได้******

พอมีวิธีแก้ไขหรือป่าวครับ ช่วยดูให้หน่อยนะครับ

Administrator
Sun 11 Dec 2005 23:19:30
ก็ใส่ค่าที่ตายตัวลงไปก่อนครับ เช่น
<?
// established connection
// query
echo "<select name=\"combo1\" onchange=\"enabledradio(this)\">";
echo "<option value=\"0\">please select</option>";
while($row = mysql_fetch_array($res, MYSQL_ASSOC)){
    echo "<option value=\"".$row["value"]."\">".$row["name"]."</option>";
}
echo "</select>";
// terminated connection
?>

ประมาณนี้ล่ะครับ
bit69
bit69
Mon 12 Dec 2005 22:59:55

<?
$data = "";
if(isset($_POST["state"]) && $_POST["state"] != ""){
    $data = $_POST["state"];
}else if(isset($_POST["combo1"]) && $_POST["combo1"] != ""){
    $data = $_POST["combo1"];
}
?>

จาก code ที่ให้มาข้างบนนี้เป็น php ใช่หรือป่าวครับ

ช่วยแนะนำที่เป็น asp หน่อยจะได้มั้ยครับ

****ขอบคุณครับ*****

Administrator
Tue 13 Dec 2005 01:18:50
ต้องขอออกตัวก่อนนะครับว่าไม่ค่อยได้เขียน ASP แค่อ่านออกแล้วก็แก้เป็นนิดหน่อย ถ้าเป็น ASP ก็จะได้ประมาณนี้ครับ
<%
Dim data
if request.form("state") <> "" then
    data = request.form("state")
elseif request.form("combo1") <> "" then
    data = request.form("combo1")
end if
%>

คงได้ประมาณนี้ล่ะครับ
bit69
bit69
Tue 13 Dec 2005 13:47:46

ขออีกรอบนะครับ

souce code ข้างล่างนี้นะครับ

<select name="combo1" onChange="enabledradio(this)" >
          <option value="0">- - - - - - เลือกข้อมูล - - - - - -</option>
          <%Do while not rs1.EOF%>
          <option value="<%=trim(rs1("ID"))%>" ><%=trim(rs1("Data"))%></option>
          <% rs1.movenext
            loop
      rs1.close
              %>

มันก็ ok นะครับ เวลาที่ผมไม่ได้เลือก ข้อมูลใน Combobox นี้เมื่อผมใช้ java ใน #8 ตามที่ให้มานะครับ มันก็เช็คว่าเรายังไม่ได้เลือกข้อมูลใน Combobox นะครับ แต่พอเราเลือกข้อมูลแล้ว พอบันทึกลงฐานข้อมูลในตาราง MyTbl และลงใน Field ชื่อว่า MyData ตามตัวอย่างฐานข้อมูลที่ #5 นะครับ มันกลับไม่มีค่าอะไรอยู่ในฐานข้อมูลเลยนะครับ ไม่รู้ว่าเพราะอะไรนะครับ เวลาเลือกข้อมูลใน Combobox มันก็มีข้อมูลที่เราดึงมาจากฐานข้อมูลให้เราเลือกนะครับ แต่พอเลือกแล้ว ทำการบันทึกมันกลับไม่มีค่าอะไรลงไปในฐานข้อมูลของเราเลยครับ

อีกหน่อยนะครับ

Rediobutton ก็เหมือนกันครับ ไม่มีค่าอะไรเหมือนกับ Combobox ครับ หรือว่าตอนทีเรารับค่า

rediobutton ก่อนหน้านี้ที่จะทำการบันทำ มันเป็น Array นะครับ หน้าที่ทำการบันทึกเราตอนที่รับค่าเราต้องทำให้มันเป็น Array ด้วยครับ

rediobutton ที่ชื่อว่า  stata เนี่ยครับตาม soucecode ที่ให้ผมมาตอนแรกนะครับ

<script language="javascript" type="text/javascript">
function validate_form(obj){
    if(!obj.state[0].checked && !obj.state[1].checked && !obj.state[2].checked && !obj.state[3].checked && !obj.state[4].checked && obj.combo1.value=="0"){
       alert("โปรดเลือก radio button หรือ combobox ก่อนครับ");
       return false;
    }
    return true;
}
</script>

นะครับ อีกรอบนะครับ

ขอบพระคุณมากครับ

Administrator
Tue 13 Dec 2005 15:47:51
ตามมาตรฐานของ javascript แล้วเมื่อประกาศตัวแปร radio ชื่อเดียวกันแล้วจะเกิดเป็น array ของ object ครับ แต่เมื่อ submit แล้ว จะมีการส่งค่าไปปกติครับ

คุณต้องลอง debug ดูครับว่าทำไมถึงไม่ได้ เท่าที่ผมได้ลองแล้วค่าที่ส่งมาก็เป็นคู่ key=value ครับ
ซึ่งเมื่อลองใช้ response.write(data) เพื่อแสดงผลการรับค่าจากการ submit ดูครับ
bit69
bit69
Tue 13 Dec 2005 19:16:49
OK ครับพอได้แล้วครับ ขอขอบคุณมากเลยนะครับ ที่ช่วยผมมาโดยตลอด
bit69
bit69
Wed 14 Dec 2005 08:41:24

ต่ออีกหน่อยนะครับ

ถ้าผมเลือกข้อมูลใน Combobox อันใดอันหนึ่งแล้ว หรือเลือก Rediobutton อันใดอันหนึ่งแล้วให้รายละเอียดของข้อมูลเหล้านั้นมาแสดงบน TextField ครับ

ซึ่ง Combobox นั้นข้อมูลที่ให้เลือกผมดึงมาจากฐานข้อมูล ส่วน Rediobutton นั้นผมกำหนดเป็นค่าตายตัวนะครับ

เช่น ผมเลือกข้อมูลใน Combobox ที่มีข้อมูลว่า "MyData" แล้วรายละเอียดของข้อมูล MyData แสดงใน Textfield คือ "MyData1.1"

ช่วยอีกทีนะครับ

Administrator
Wed 14 Dec 2005 10:24:38
ถ้าเป็น textbox ที่อยู่ใน form เดียวกันนะครับสามารถทำได้โดย
<script language="javascript">
function showData(obj,txt){
    var theform = obj.form;
    theform.info.value = txt;
}
</script>

<form action="..." method="....">
Info : <input type="text" name="info"><br>
<select name="combo1" onchange="showData(this,this.options[this.selectedIndex].label)">
<option value="0">Please select</option>
<option label="Number 1" value="value 1">1</option>
<option label="Number 2" value="value 2">2</option>
</select>

<input type="radio" name="state" value="1" onclick="showData(this, 'Information')">
<input type="radio" name="state" value="2" onclick="showData(this, 'Contact')">
</form>

จากข้างบนจะเห็นว่าเป็นการนำข้อมูลใน select มาแสดงผลผมใช้ attribute label ในการอ้างอิงมาแสดงผล
ส่วน radio นั้นเราสามารถส่งค่าตามต้องการไปยังฟังก์ชั่นได้เลยครับ
bit69
bit69
Wed 14 Dec 2005 14:11:02

พี่ครับ พอจะมี Mail หรือป่าวครับ เผื่อผมจะได้ Msn ไปปรึกษาหน่อย

Administrator
Wed 14 Dec 2005 14:19:22
ต้องขออภัยด้วยครับ ผมได้เลิกใช้ messenger ทั้งหลายนานแล้วครับ อีกอย่างที่ผมทำ forum นี้ขึ้นมาเพื่อที่จะได้เป็นประโยชน์กับท่านอื่นๆที่อาจจะประสบปัญหาเดียวกันก็ได้น่ะครับ ยังไงคงต้องรบกวนถามตอบในนี้ดีกว่าครับ
bit69
bit69
Wed 14 Dec 2005 15:02:13

ไม่เปนไรครับ ขอบคุณมากครับ

bit69
bit69
Wed 14 Dec 2005 17:02:04

คือ combobox ที่ผมมีอยู่ผมดึงตามนี้นะครับ

<select name="combo1" onChange="enabledradio(this)" >
          <option value="0">- - - - - - เลือกข้อมูล - - - - - -</option>
          <%Do while not rs1.EOF%>
          <option value="<%=trim(rs1("ID"))%>" ><%=trim(rs1("Data"))%></option>
          <% rs1.movenext
            loop
      rs1.close
              %>

ซึ่งในส่วนของฐานข้อมูลผมจะเพิ่มราคาลงไปคือ field = Price นะครับ

id,data,price

ซึ่งเวลาที่ผมเลือกข้อมูลใน combobox นั้นมันจาเก็บค่า data ไว้เพื่อบันทึกลงในฐานข้อมูลนะครับ แล้วส่วนของ price นั้นผมจะให้มันแสดง ใน textfield เพื่อที่จะนำไปบันทึกลงฐานข้อมูลด้วยเช่นกัน ผมไม่รู้ว่าจะดึง price เวลาที่เลือกข้อมูล data ออกมายังงัยครับ และพอดึงได้มันจะนำมาแสดงใน textfield ยังงัยครับ

ในส่วนที่ผม

bit69
bit69
Wed 14 Dec 2005 17:04:22

ขอโทษนะครับ เพิ่มเติมครับ เปลี่ยนจาก<%=trim(rs1("ID"))%> เปน <%=trim(rs1("Data"))%>ครับ

Administrator
Wed 14 Dec 2005 20:30:46
<select name="combo1" onChange="enabledradio(this); showData(this,this.options[this.selectedIndex].label);" >
<option value="0">- - - - - - เลือกข้อมูล - - - - - -</option>
          <%Do while not rs1.EOF%>
          <option value="<%=trim(rs1("Data"))%>" label="<% =trim(rs1("price"))%>"><%=trim(rs1("Data"))%></option>
          <% rs1.movenext
            loop
      rs1.close
              %>
</select>

ลองแบบนี้ดูครับ
bio
bio
Tue 26 Jun 2007 15:44:23

อยากทราบว่าถ้ามีRadio button10 ปุ่ม ถ้าเรากดsubmit ต้องการให้มันบอกว่ายังกรอกไม่ครบจะทำยังไงครับ

แนน
แนน
Thu 5 Jul 2007 10:47:43

อยากทราบว่าถ้าเราออกแบบฟอร์มมาให้ผู้ใช้กรอกข้อมูล

แล้วผู้ใช้กรอกข้อมูลไม่ครบ

อยากให้โปรแกรมบอกผู้ใช้ว่าคุณยังกรอกข้อมูลยังไม่ครบ

แล้วให้ผู้ใช้กรอกข้อมูลตรงที่ยังไม่ได้กรอก

จะเขียนโคดยังไงค่ะใครรู้ช่วยตอบหน่อยนะค่ะขอบคูณล่วงหน้าค่ะ

webmaster
webmaster
Sat 7 Jul 2007 18:12:30
ใช้ javascript ตรวจสอบที่ละหัวข้อครับ เหมือนโค๊ดข้างบนครับ
nok
nok
Sun 8 Jul 2007 14:50:44

อยากทราบว่าจะนำฐานข้อมูล sql  มาแสดงใน combobox ยังไง ใน VB6

nok
nok
Sun 8 Jul 2007 14:59:27

อยากทราบว่าจะนำฐานข้อมูล sql  มาแสดงใน combobox ยังไง ใน VB6

Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login