1

กระทู้: ปัญหา event.keyCode กับ Firefox

ผมเขียนโค้ดเพื่อเช็คใน textbox ให้ทำการเช็คการคีย์ได้เฉพาะตัวเลขเท่านั้น

ตัวอย่าโค้ด
<SCRIPT language=JavaScript>
    function check_number() {
        key=event.keyCode;
        if (key != 13 && (key < 48) || (key > 57)) {
        event.returnValue = false;
        alert("ต้องเป็นตัวเลขเท่านั้น... \nกรุณาตรวจสอบข้อมูลของท่านอีกครั้ง...");
        }
    }
</SCRIPT>

เมื่อนำมาใช้กับ textbox
<input type="text" name="textbox1" onKeyPress="check_number()">

ใช้กับ IE ไม่มีปัญหา ดูปัญหาจากของเมืองนอกเค้าแก้กัน ก็งงเต๊กเข้าไปใหญ๋

ใครพอมีประสบการณ์เขียนในเงื่อนไขแบบนี้ ช่วยแนะนำหน่อยนะครับผม&nbsp; :MeeWebFree03:

2

ตอบ: ปัญหา event.keyCode กับ Firefox

เป็นเรื่องปรกติครับพี่&nbsp; javascript กับ firefox ค่อนข้างมีปัญหาใช้งานร่วมกันไม่ค่อยได้ ไม่ใช่เรื่องแปลกครับ

3

ตอบ: ปัญหา event.keyCode กับ Firefox

ในที่สุดก็มั่วเอาจนได้&nbsp; :MeeWebFree31:

เขียนโค้ดแบบนี้
<SCRIPT language=JavaScript>
    function check_number(e) {
        var key;
        if (window.event) key = window.event.keyCode; // ใช้กับ IE
        else if (e) key = e.which; // ใช้กับ Firefox
        if (key = 13 && key != 8 && key != 9 && key != 16 && key != 17 && key != 20 && key != 35 && key != 36 && key != 46 && (key < 48) || (key > 57) && (key < 96) || (key > 105) && key != 116) {
            return false;
        }
    }

</SCRIPT>

มั่วเอาสุดๆ ทีแรกตั้งใจให้มี alert ด้วย แต่ FF ใช้ event.returnValue = false; ไม่ได้อีก

ก็เลยช่างมัน ไม่ต้อง alert ก็ได้วะ ตัดความน่ารำคาญของเว็บอีกนิด เพื่อนๆ สามารถนำไปใช้กับเว็บได้เลยนะครับ

ผมทดสอบทั้ง IE และ FF แล้วใช้ได้ครับ หลักการของโค้ดตัวนี้ก็คือในช่อง textbox ให้คีย์ได้เฉพาะตัวเลขเท่านั้น

ตัวหนังสือหรืออื่นๆ จะคีย์ไม่ขึ้นครับ

วิธีนำไปเขียนใน textbox
<input type="text" name="textbox1" onKeyDown="document.onkeydown=check_number">

4

ตอบ: ปัญหา event.keyCode กับ Firefox

อิอิ java

5

ตอบ: ปัญหา event.keyCode กับ Firefox

ติดปัญหาเหมือนกันครับ แต่ไปเจอเว็บนี้มา ก็ใช้ได้แล้วครับ ใช้ได้ทั้ง IE และ FF
http://www.sitepoint.com/forums/showthread.php?t=330837

function check_num(e)
{
    var keyPressed;
   
    if(window.event){
        keyPressed = window.event.keyCode; // IE
    &nbsp; &nbsp; if ((keyPressed < 45) || (keyPressed > 57)) window.event.returnValue = false;
    }else{
        keyPressed = e.which; // Firefox       
    &nbsp; &nbsp; if ((keyPressed < 45) || (keyPressed > 57)) keyPressed = e.preventDefault();
&nbsp; &nbsp; }
}

<input type=&#039;text&#039; name=&#039;test&#039; onkeypress=&#039;check_num(event)&#039; />

Note : Firrfox ไม่มี returnValue แต่มี preventDefault();

ลองใช้ดูกันนะครับ สู้ๆ

Big Thx : http://www.sitepoint.com/forums/showthread.php?t=330837

6

ตอบ: ปัญหา event.keyCode กับ Firefox

ขอบคุณครับ

7

ตอบ: ปัญหา event.keyCode กับ Firefox

ถึงคุณ max_win

มันกลายเป็นว่า ในช่องนั้น fire fox ไม่สามารถที่ะกดปุ่มอะไรได้ แม้กระทั่งการ ลบข้อมูลในช่อง - -"

8

ตอบ: ปัญหา event.keyCode กับ Firefox

function check_num(e)
{
    var keyPressed;
   
    if(window.event){
        keyPressed = window.event.keyCode; // IE
    if (keyPressed != 46 &  (keyPressed < 48 || keyPressed > 57)) window.event.returnValue = false;
    }else{
        keyPressed = e.which; // Firefox       
    if (keyPressed != 8 & (keyPressed != 46 &  (keyPressed < 48 || keyPressed > 57)) ) keyPressed = e.preventDefault();

}
}

ตอบ: ปัญหา event.keyCode กับ Firefox

เวลาหาเพื่อนคุยทำไง neutral  neutral

ตอบ: ปัญหา event.keyCode กับ Firefox

เวลาหาเพื่อนคุยทำไง neutral  neutral

11

ตอบ: ปัญหา event.keyCode กับ Firefox

สั้นๆแต่ได้ใจความ แก้จากข้างบน เห็นยาวเกิน

function check_num(e)
{
    var key;
   
    if(window.event){
        key = window.event.keyCode; // IE
if (key > 57)
      window.event.returnValue = false;
    }else{
        key = e.which; // Firefox       
if (key > 57)
      key = e.preventDefault();
  }
}