ขอ ถามเรื่อง การใส่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;
}
อันนี้โค๊ดที่ผมใชสร้าง ตารางครับ
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;
}
a.innerHTML="<input type='text' name='new_model[]' id='new_Model"+line+"' onkeyup=function(){dokeyup(this)} />"
บางครั้ง เราอาจได้ทดลองวิธีนี้แล้ว แต่อาจไม่สำเร็จ โดยทั่วไปก็เป็นเพราะ เขียนฟังก์ชั่นรองรับ event ไม่ถูกรูปแบบ
และที่สำคัญจะต้องเรียกไปทำงานที่ฟังก์ชั่นภายนอกเท่านั้น
สำหรับ browser รุ่นใหม่ๆ บางครั้ง วิธีข้างบนก็ไม่ได้ผลเหมือนกัน ซึ่งบางทีก็หาสาเหตุไม่ได้ และ เพื่อหลีกเลี่ยงปัญหาด้านบน จึงควรใช้คำสั้ง Javascript กับ DOM ระดับ 2 แทน ซึ่งจะทำให้ไม่พบปัญหาดังกล่าวอ้ก
ถ้าเป็น GAjax จะใช้ addEvent
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อะครับ
ให้ดู DOM ระดับ 2 ครับ ซึ่งมีการเรียกใช้แตกต่าง
กันในแต่ละ browser
บนเว็บก็เคยเขียนไว้ ลองหาดูครับ
Model.onclick = function(){
alert('do some thing');
}