GORAGOD.com

freelance, web developer, web designer, hosting, domain name

ขอ ถามเรื่อง การใส่event ให้กับ input ที่ create elementขึ้นมา

ผมจะใส่event ลงไปใน inputที่ใช้ javascript สร้างขึ้นมายังไงครับ ยังไม่ค่อยเข้าใจ

อันนี้โค๊ดที่ผมใชสร้าง ตารางครับ

function increaserow(){

    

        var line =parseInt(document.getElementById("hdline").value);

        line++;

    alert(line);

var myTable=document.getElementById('myTable')

var current_row=document.getElementById('myTable').rows.length

var x=myTable.insertRow(current_row)        // insert new row

var y=myTable.rows                // get attribute of row

var a=x.insertCell(0)            // assign position of cell 1 in new row

var b=x.insertCell(1)            // assign position of cell 2 in new row

var c=x.insertCell(2)            // assign position of cell 3 in new row

    a.innerHTML="<input type='text' name='new_model[]'  id='new_Model"+line+"' />"

    b.innerHTML="<input type='text' name='new_image[]'  id='im"+line+"' />"

    c.innerHTML="<input type='text' name='new_pdf.[]' id='pdf"+line+"' />"

    

    document.getElementById("hdline").value=line;

}
10 ม.ค. 2554 5 2,563

วิธีง่ายสุด ก็เขียน event ลงใน ข้อความ (text) เลยครับ โดยให้มันไปเรียกฟังก์ชั่นภายนอกที่เตรียมไว้



a.innerHTML="<input type='text' name='new_model[]'  id='new_Model"+line+"' onkeyup=function(){dokeyup(this)} />"



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



และที่สำคัญจะต้องเรียกไปทำงานที่ฟังก์ชั่นภายนอกเท่านั้น



สำหรับ browser รุ่นใหม่ๆ บางครั้ง วิธีข้างบนก็ไม่ได้ผลเหมือนกัน ซึ่งบางทีก็หาสาเหตุไม่ได้ และ เพื่อหลีกเลี่ยงปัญหาด้านบน จึงควรใช้คำสั้ง Javascript กับ DOM ระดับ 2 แทน ซึ่งจะทำให้ไม่พบปัญหาดังกล่าวอ้ก



ถ้าเป็น GAjax จะใช้ addEvent
#1

ครับพี่ ผมเลย ลอง แบบนี้แต่มันไม่รันในIE

    var Model =document.createElement("input");

    Model.type="text";

    Model.name = 'new_Model[]';

    Model.id='new_Model'+line;

    Model.setAttribute("onclick","BrowseServer( 'Images:/', 'new_Model"+line+"');");

    a.appendChild(Model);



ปัญหากะคือจะเรียกใช้file manager ของ ckfinderอะครับ

 
#2

setAttribute  ใช้ไม่ได้ครับ



ให้ดู DOM ระดับ 2 ครับ ซึ่งมีการเรียกใช้แตกต่าง

กันในแต่ละ browser



บนเว็บก็เคยเขียนไว้ ลองหาดูครับ
#3

ถ้าเขียนโค้ดแบบนี้ ใช้



Model.onclick = function(){

  alert('do some thing');

}
#4

ขอบคุณครับ พี่ ผมยังไม่เข้าใจdom ระดับ 2เลยครับ  อิอิ แก้ผ้าเอาหน้ารอดไปก่อนครับ อิอิ
#5
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^