รบกวนถามเรื่อง if else ที่ใช้ใน tag Form

รบกวนถามเรื่อง if else ที่ใช้ใน tag Form ครับ คือประมาณว่า

ถ้าเราค้นหา id 101 จะ run  onKeyUp=\"addToBasket(1);return false\" น่ะครับ
 id 102  run  onKeyUp=\"addToBasket(2);return false\"
id 103  run  onKeyUp=\"addToBasket(3);return false\"
ผมลองทำดูแล้วมัน error บ่อยมากอ่าครับยังทำไม่ได้เลย พอดีต้องใช้ในงาน project วิชาเรียน รบกวนด้วยนะครับ

 <?php   
  echo"<form>"
  . "            <div align=\"center\" class=\"style17\"> Product_id:"
  . "              <input type=\"text\" id=\"txt2\" onKeyUp=\"addToBasket(4);return false\" />"
  . "             </div>"
  . "        </form>"
 ."";
  ?>

 

07 ธ.ค. 2552 11 2,898

555+++

งงกะคำถาม

ถ้าจะหา id 199 ไม่ต้องใช้ฟังก์ชั่น addToBasket(99); เหรอ

ลองเขียนคำถามมาใหม่นะ....หรือไม่ก็ลองค้นหาบทความบนเว็บดู เดาๆว่ามีที่ใกล้เคียงนะ
#1

''งง''
#2

เทาที่ผมเข้าใจก็คือ....
อยากให้ฟอร์มทำกิจกรรมอย่างหนึ่งเมื่อ input ตัวหนึ่งมีข้อมูลหรือเปล่า

คือถ้า id = 102 ก็ให้ addToBasket(2)
และถ้า id = 103 ก็ให้ addToBasket(3)

ประมาณว่าถ้าเลือกข้อมูลอย่างใดอย่างหนึ่งแล้วให้แสดงข้อมูลทีเกี่ยวข้องขึ้นมาเลย โดยที่ไม่ต้อง refresh ทั้งจอ(มั้ง)
กรณีนี้น่าจะส่งตัวแปรที่เลือกไป if...else ที่ server น่าจะดีกว่าครับ คือส่ง id ไปเข้าฟังก์ชั่น แล้วให้ฟังก์ชั่นกระทำการ แล้วส่งข้อมูลขึ้นมาแสดงบนฟอร์ม

อย่าลืมว่า javascript กระทำการใดๆฝั่ง client
และ php เป็นการกระทำฝั่ง server เพราะฉะนั้นควรเลือกใช้ให้เหมาะสมกับสถานการณ์

ปล.อธิบายตามความเข้าใจของคำถามส่วนตัวนะครับ.....
#3

งงครับ ถ้ายังไงช่วยโพสโค๊ด ให้ดูหน่อยนะ เผื่อช่วย เหลือและแนะนำกันได้

#4

เทาที่ผมเข้าใจก็คือ....
อยากให้ฟอร์มทำกิจกรรมอย่างหนึ่งเมื่อ input ตัวหนึ่งมีข้อมูลหรือเปล่า

คือถ้า id = 102 ก็ให้ addToBasket(2)
และถ้า id = 103 ก็ให้ addToBasket(3)

---------------------------------------------------------

เหมือนที่พี่ blueeye บอกอ่าครับ ประมาณว่าผมใช้  onKeyUp พิมพ์อะไรมันก็จะดึง addToBasket(4); ทันที

 <?php   
  echo"<form>"
  . "            <div align=\"center\" class=\"style17\"> Product_id:"
  . "              <input type=\"text\" id=\"txt2\" onKeyUp=\"addToBasket(4);return false\" />"
  . "             </div>"
  . "        </form>"
 ."";
  ?>

ไม่รู้จะอธิบายยังไง คือผมอยากให้พิมพ์ product_id ให้ครบก่อนน่ะครับเช่นพิมพ์ 101 จึงจะให้มันแสดงผล


กรณีนี้น่าจะส่งตัวแปรที่เลือกไป if...else ที่ server น่าจะดีกว่าครับ คือส่ง id ไปเข้าฟังก์ชั่น แล้วให้ฟังก์ชั่นกระทำการ แล้วส่งข้อมูลขึ้นมาแสดงบนฟอร์ม

ช่วยอธิบายหน่อยครับ

#5

ถ้าเข้าไปในบทความ "ตรวจสอบฟอร์มขณะพิมพ์ด้วย GAJAX" จะเจอตัวอย่างที่ง่ายมาก แต่ต้องใช้ GAJAX นะ

คือผมกำลังพยายามเข้าใจคำถามตรงที่ว่า "onKeyUp พิมพ์อะไรมันก็จะดึง addToBasket(4); ทันที" หมายถึงพิมพ์ปุ๊ป add ลง 4 เลย หรือ พิมพ์ปุ๊ป แสดงข้อมูลปั๊ป (อะไรประมาณนี้หรือเปล่า)

ในตัวอย่างที่ผมจะให้ลองไปดู event จะประมาณนี้นะ .....

onKeyUp='searchkeyup(this.value)' onBlur='hidesearch();' onFocus='searchkeyup(this.value)' onMouseup='searchkeyup(this.value)'

event กลุ่มข้างบนนี้ใช้ด้วยกัน ทำให้การแสดงผลออกมาเหมือน www.google.co.th มาก โดยใช้เทคนิคของ ajax เช้ามาช่วย ...
สังเกตุชื่อฟังก์ชั่นนะครับ แล้วเข้าไปดูตัวอย่าง.... โดยจะเลือกเอา event บางตัวให้เหมาะสมกับงานก็ได้

ส่วน if .... else ที่ถามมาต้องนำไปใช้ในฟังก์ชั่นครับ.... ตรง event แบบข้างบนก็แค่ส่งค่าหรือตัวแปรไปให้ฟังก์ชั่นเท่านั้น ในกรณีของเจ้าของคำถามก็คือ id (ถ้าเป็นขอมูลไม่เยอะก็ทำแบบตัวเลือก select ก็ได้) ฉะนั้นจะได้ประมาณข้างบนครับ ตรง this.value ก็คือค่าที่ได้จากการกรอกข้อมูลลง  input box นั่นละครับ สมมติว่าพิมพ์เลข 102 ลงไปก็ส่งค่า 102 เข้าไปในฟังก์ชั่นเลย ..... ส่วนที่ฟังก์ชั่นก็รับค่าที่ส่งไปนั้น เอาไป if...else ได้ตามสบาย

อันนี้เป็นตัวอย่างแบบการใช้ event ของ input box และเทคนิค ajax ครับ อาจจะเข้าใจยากสำหรับมือใหม่ แต่ผมลองทำตามแล้วก็ใช้ได้เลย ให้ลองสังเกตเรื่องการเรียกใช้ฟังก์ชั่นเพื่อเอามาประยุกต์กับคำถามของเจ้าของกระทู้ครับ

http://www.goragod.com/knowledge-....html?search=google


#6

เดานะ...

คำถามก็คือ ต้องการ textbox กรอกข้อมูล ให้ครบ 3 หลัก ก่อนไปร้องขอข้อมูลจาก Server

ถ้าใช่ คำตอบมีมากมายบนเว็บ....

คำแนะนำที่อยากให้ทำก่อน ในกรณีที่ไม่รู้อะไรเลย คือ ทำ Ajax ให้มันส่งค่าไปตรวจสอบ และตอบกลับมาได้เสียก่อน เช่น พิมพ์ 1 ส่งไปตรวจ ไม่มีผลลัพท์ ก็ส่งค่าว่างกลับ พิมพ์ตัว ที่ 2 ก็ส่งไปตรวจสอบอีก จนกระทั่งพิมพ์ครบ 3 ตัว ถึงจะได้ค่าตอบกลับ

นี่เป็นอย่างแรกที่ควรทำ และ มีตัวอย่างหลายบทความบนเว็บ ควรลองหาดู....

หลังจากนั้น กลับมาที่คำถาม บอกว่า id ที่จะมีได้ก็คือต้องกรอกครบ 3 ตัว อันนี้ไม่ยากเลย แค่นับจำนวนตัวอักษรก่อนถ้าครบ 3 แล้วค่อยส่งไปตรวจด้วย Ajax หลักการก็ใ้ช้ Javascript ผมจะให้แค่แนวคิดนะ

var value = document.getElementById('input_id').value;
if( value.length > 2 ){
  // Ajax ส่งไปตรวจสอบ
}
#7

<script type="text/javascript">
function addToBasket(var id) {
  if(id == 101)
    addToBasket(1);
  if(id == 102)
    addToBasket(2);
   if(id == 103)
    addToBasket(3);
   if(id == 104)
    addToBasket(4);
   if(id == 105)
    addToBasket(5);
  if(id == 106)
    addToBasket(6); 
 
}


</script>

<form>
  <div align="center"><span class="style7">Product_id :</span>
    <input type="text" onkeyup="addToBasket;" />
  </div>
</form>

รบกวนอาจารย์ดู code ให้หน่อยครับควรปรับตรงไหนบ้าง

#8

มันทำงานป่าวละท่าน ถ้ามันสามารถทำงานได้ตามต้องการมันก็ใช้ได้ ถึงแม้มันจะดูแปลกๆไปนิด

จริงๆแล้วมันอาจมีวิธีที่ดีกว่า แต่ข้อมูลมันไม่เพียงพอ เลยไม่สามารถหาวิธีที่ดีกว่าได้ เอาเป็นว่า ถ้ามันสามารถทำงานได้ตามต้องการ มันก็ไม่มีอะไรผิดหรอกครับ

เขียนใหม่ๆเราอาจจะเขียนซะยาวเหยีียด แต่พอเรามีประสบการณ์มากขึึ้้น เมื่อเราหันกลับมามองอีกทีเราอาจจะรู้สึกเองแหละครับว่า "ไอ้ตอนนั้นเขียนอะไรไปวะ...." และมันก็คงจะเกิดขึ้นกับทุกคนแหละครับ ไม่ต้องกังวล
#9

แปลกตรงฟังก์ชั่น addToBasket นั่นล่ะ ....
ตั้งแต่ if ล่ะครับ มันน่าจะเป็น

if (.....) {

} else if (......) {

}else if (......) {

} else {

}

แต่ที่แปลกยิ่งขึ้นไปอีกก็คือ statement ใน if มันทำไมเรียกฟังก์ชั่นตัวเอง แถมใส่ตัวแปรเข้าไปอีก มันทำงานยังไงหว่า..?
ถ้าจะให้ฟังก์ชั่นรับค่าแล้วทำตามเงื่อนไขแล้วล่ะก็น่าจะเป็นอย่างนี้นะ

function addToBasket(id) {
 if (id == '101') {
  other_function(1); <<<< ตรงนี้ถ้าจะเรียกฟีังก์ชั่นอื่นๆก็ได้ แต่ไม่น่าเรียกตัวเอง
 } else if (id == '102') {
  other_function(2);
 } else if (id == '103') {
  other_function(3);
 } else if (id == '104') {
  other_function(4);
 } else if (id == '105') {
  other_function(5);
 } else if (id == '106') {
  other_function(6);
 }
}

ตรง
onkeyup="addToBasket;" ก็น่าจะใส่ตัวแปรลงไปด้วย เป็น

onkeyup="addToBasket($id);"

เป็นต้น....
#10

ขอบคุณอาจารย์มากนะครับ ตอนนี้ฟังก์ชั่นใช้งานได้แล้วครับ 





#11
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^