|
|
|
สอบถาม selector แบบ var บน jquery ไม่ทำงานครับ รบกวนทีครับ |
|
|
|
|
|
|
|
var tr_id = 'tr_'+($('#myTable tr').length+1);
ต้องแน่ใจว่า tr_xxx มีอยู่จริง
ทดสอบ
Code (JavaScript)
var tr_id = 'tr_'+($('#myTable tr').length+1);
if($('#'+tr_id).length) alert('Found'); else alert('Not found');
|
|
|
|
|
Date :
2015-08-14 11:46:11 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รายละเอียดน้อยไป ดูยาก
แต่คร่าวๆ ว่า
var tr_id = 'tr_'+($('#myTable tr').length+1);
มัน +1 อยู่
และการวางตำแหน่ง var tr_id น่าจะทำให้ค่าตายตัว
|
|
|
|
|
Date :
2015-08-14 13:04:43 |
By :
CasanovaKung |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้เป็นตัวที่สร้าง tr td ขึ้นมาครับ
Code (PHP)
function AddRow(){
var tr_id = 'tr_'+($('#myTable tr').length+1);
$("#myTable").append(
'<tr id="'+tr_id+'">'+
'<td><button type="button" class="btn btn-danger btn-xs"> -- </button></td>'+
'<td><input type="text" class="form-control input-sm std_id" name="std_id[]" maxlength="14" placeholder="รหัสนักศึกษา"></td>'+
'<td><select class="form-control input-sm">'+
'<option value="1">นาย</option>'+
'<option value="2">น.ส.</option>'+
'<option value="3">นาง</option>'+
'</select></td>'+
'<td><input type="text" class="form-control input-sm std_name" name="std_name[]" placeholder="ชื่อ"></td>'+
'<td><input type="text" class="form-control input-sm std_surname" name="std_surname[]" placeholder="นามสกุล"></td>'+
'</tr>'
);
|
|
|
|
|
Date :
2015-08-14 13:22:42 |
By :
littlebeer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tag tr ไม่มี event keypress อยู่แล้วนี่น่า
ส่วน #barcodeMachine กับ #memtotal เป็น tag input ใช่ไหมล่ะ
|
|
|
|
|
Date :
2015-08-14 13:45:28 |
By :
watcharop |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอาหน้าจอ result ที่ต้องการ +
พร้อมระบุความต้องการ +
โค้ดที่เขียนไว้แล้วบางส่วนหรือส่วนที่ติดปัญหา
น่าจะได้คำตอบเร็วขึ้นครับ
|
|
|
|
|
Date :
2015-08-14 14:21:11 |
By :
CasanovaKung |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สร้างตัวแปรเก็บ last row หรือจำนวนแถวสุดท้ายที่เพิ่มเข้าไปเป็นค่าอะไร
เพราะว่าใน function
Code (JavaScript)
var tr_id = 'tr_'+($('#myTable tr').length+1);
จะผิดเพี้ยน แถวที่โดนลบ ไม่ใช่แถวสุดท้าย
จะทำให้ค่า id ซ้ำ ไม่สามารถทำงานได้ในค่าที่ซ้ำ
// เผ่นแปป
|
|
|
|
|
Date :
2015-08-14 14:52:51 |
By :
CasanovaKung |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$("#barcodeMachine, #memtotal, #myTable tr")
และ <tr> จะทำงาน ก็ต่อเมื่อ focus ที่ object ที่อยู่ภายใน tr นั้นนะครับ
โค๊ดสำหรับทดสอบ
Code (PHP)
<!doctype html>
<html>
<head>
<meta charset="utf8" />
<title>test TR keypress</title>
<script src="/jquery-2.1.1.min.js"></script>
<script>
$(document).ready(function(){
$('#t1').keyup(function(e) {
$('#t2').append('in<br>');
});
$('tr').keypress(function(e) {
$('#t2').append('tr<br>');
});
});
</script>
</head>
<body>
<table>
<tr><td><input id="t1" /></td></tr>
</table>
<p id="t2"></p>
</body>
</html>
|
|
|
|
|
Date :
2015-08-14 14:58:54 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
งง หนักเลยครับ -*-
|
|
|
|
|
Date :
2015-08-14 15:44:52 |
By :
littlebeer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จากโค๊ดตัวอย่าง 11 บันทัดที่ 20 มี <input id=t1> อยู่ใน <tr><td>
เวลา focus ที่ input t1 event keypress ของ <tr> ก็จะทำงานด้วย
เพราะ focus ที่ ลูกก็เหมือน focus ที่แม่เหมือนกัน
ลองทดสอบโค๊ดดูจะเห็นการทำงานของ event มากขึ้นครับ
อย่าอ่านอย่างเดียวถ้าอ่านอย่างเดียวแล้วเข้าใจ คงไม่ต้องมาถามแล้วล่ะครับ
$("#barcodeMachine, #memtotal, #myTable tr")
จากโค๊ดข้างบน สีแดง เป็นการอ้างอิง Id ปกติจะไม่พูดถึงทำงานได้ปกติ
ที่แก้ให้ให้เป็น #myTable tr คือการอ้างอิง <tr> ของตาราง myTable ทุกอัน
ถ้ามีการ focus ของลูกที่อยู่ใน tr เหล่านี้ event keypress ของ <tr> เหล่านี้ก็จะทำงานด้วย
|
ประวัติการแก้ไข 2015-08-14 16:32:30
|
|
|
|
Date :
2015-08-14 16:24:30 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ในฟังก์ชั่นข้างล่าง
Code (JavaScript)
function AddRow(){
var tr_id = 'tr_'+($('#myTable tr').length+1); // กำหนดค่า tr_id
$("#myTable").append(
'<tr id="'+tr_id+'">'+ // เพื่อมาใส่อันนี้
กับ
Code (JavaScript)
<script type="text/javascript">
var tr_id = 'tr_'+($('#myTable tr').length+1);
// กำหนดค่า tr_id ถ้าได้ก็ได้แค่อันเดียว เพราะ ฟลุ๊กมี tr_1
// หรือ อาจจะได้ tr_21 ก็ได้ เพราะ ตารางมี 20 rows
$("#barcodeMachine, #memtotal,"+'#'+tr_id).bind("keypress", function(event) { //ตรวจสอบตัวเลขและขีดเท่านั้น
ดังนั้น ค้นหาด้วย tr_id ก็จะเพี้ยน แล้วไม่ได้ ทุก tr จึงให้เป็น อ้างอิง ตาราง "#myTable tr"
ซึ่งจะเป็นการอ้าง ทุก tr ใน ตาราง #myTable
|
|
|
|
|
Date :
2015-08-14 17:10:35 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองดูแบบนี้ครับ
<script type="text/javascript">
var lastid = parseInt($('#myTable tr').length)+1;
alert(lastid);
$("#barcodeMachine, #memtotal, #tr_"+lastid).bind("keypress", function(event) { //ตรวจสอบตัวเลขและขีดเท่านั้น
var charCode = event.which;
if (charCode <= 13) return true;
var keyChar = String.fromCharCode(charCode);
return /[0-9-]/.test(keyChar);
});
</script>
|
|
|
|
|
Date :
2015-08-15 01:22:34 |
By :
cowboycnx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จำได้ว่าเคยทำโค๊ดตัวอย่างไปให้ดูแล้วไม่ใช่เหรอครับ
ว่าต้องกำหนด event ให้กับ object ที่อยู่ใน row ที่สร้างขึ้นใหม่
ถ้าจำผิดก็ขอโทษนะครับ ตัวอย่างโค๊ดทดสอบแล้ว
Code (PHP)
<?php
if(isset($_REQUEST['id'])){
$id=$_REQUEST['id'];
echo json_encode(array('std_name'=>'NM-'.$id, 'std_surname'=>'SN-'.$id));
exit;
}
?><!doctype html>
<html>
<head>
<meta charset="utf8" />
<title>TEST</title>
<script src="/jquery-2.1.1.min.js"></script>
<script>
$(document).ready(function(){
$('button').click(function(e) { AddRow();});
$("#barcodeMachine, #memtotal").keypress(numNminus);
});
function AddRow(){
var tr_id = 'tr_'+($('#myTable tr').length+1), ro='#'+tr_id;;
$("#myTable").append('<tr id="'+tr_id+'">'+
'<td><button type="button" class="btn btn-danger btn-xs"> -- </button></td>'+
'<td><input type="text" class="form-control input-sm std_id" name="std_id[]" maxlength="14" placeholder="รหัสนักศึกษา"></td>'+
'<td><select class="form-control input-sm">'+
'<option value="1">นาย</option>'+
'<option value="2">น.ส.</option>'+
'<option value="3">นาง</option>'+
'</select></td>'+
'<td><input type="text" class="form-control input-sm std_name" name="std_name[]" placeholder="ชื่อ"></td>'+
'<td><input type="text" class="form-control input-sm std_surname" name="std_surname[]" placeholder="นามสกุล"></td>'+
'</tr>');
// เริ่มโค๊ด กำหนด event ให้กับ object ใน row ที่สร้างขึ้นใหม่
$(ro + ' .std_id').change(function(e) {
$.ajax({ url: '?id='+$(this).val()})
.done(function(js_txt){
var rs=JSON.parse(js_txt);
$(ro + ' .std_name').val(rs.std_name);
$(ro + ' .std_surname').val(rs.std_surname);
});
});
$('#'+tr_id).keypress(numNminus); // ตรวจสอบ row
// สิ้นสุดโค๊ด กำหนด event ให้กับ object ใน row ที่สร้างขึ้นใหม่
}
function numNminus(event) { //ตรวจสอบตัวเลขและขีดเท่านั้น
var charCode = event.which;
if (charCode <= 13) return true;
var keyChar = String.fromCharCode(charCode);
return (/[0-9\-]/).test(keyChar);
}
</script>
</head>
<body>
<table border=1 id="myTable">
</table>
<button type="button" >AddRow</button>
<input id="barcodeMachine">
<input id="memtotal">
</body>
</html>
|
ประวัติการแก้ไข 2015-08-15 03:36:46
|
|
|
|
Date :
2015-08-15 03:04:46 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|