Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 105,820

HOME > PHP > PHP Forum > สอบถาม selector แบบ var บน jquery ไม่ทำงานครับ รบกวนทีครับ


 

สอบถาม selector แบบ var บน jquery ไม่ทำงานครับ รบกวนทีครับ

 



Topic : 118369



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์




จากโค้ด selector สองตัวแรกทำงาน แต่ตัวสุดท้ายไม่ทำงานครับ

Code (PHP)
<script type="text/javascript">
     var tr_id = 'tr_'+($('#myTable tr').length+1);
 
     $("#barcodeMachine, #memtotal,"+'#'+tr_id).bind("keypress", function(event) {  //ตรวจสอบตัวเลขและขีดเท่านั้น
        var charCode = event.which;
        if (charCode <= 13) return true; 

        var keyChar = String.fromCharCode(charCode); 
        return /[0-9-]/.test(keyChar); 
    });
</script>




Tag : PHP, HTML/CSS, JavaScript, jQuery







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-08-14 11:00:50 By : littlebeer View : 501 Reply : 18
 

 

No. 1



โพสกระทู้ ( 1,600 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

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
 


 

No. 2



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : NewbiePHP เมื่อวันที่ 2015-08-14 11:46:11
รายละเอียดของการตอบ ::
Not found ครับ แต่แปลกว่าทำไม alert(tr_id) มันขึ้น tr_1 ก็เหมือนกับว่ามันมีอยู่จริง

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-14 12:34:10 By : littlebeer
 

 

No. 3



โพสกระทู้ ( 200 )
บทความ ( 0 )



สถานะออฟไลน์


รายละเอียดน้อยไป ดูยาก
แต่คร่าวๆ ว่า
var tr_id = 'tr_'+($('#myTable tr').length+1);
มัน +1 อยู่
และการวางตำแหน่ง var tr_id น่าจะทำให้ค่าตายตัว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-14 13:04:43 By : CasanovaKung
 


 

No. 4



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์


อันนี้เป็นตัวที่สร้าง 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
 


 

No. 5



โพสกระทู้ ( 1,328 )
บทความ ( 1 )



สถานะออฟไลน์


tag tr ไม่มี event keypress อยู่แล้วนี่น่า

ส่วน #barcodeMachine กับ #memtotal เป็น tag input ใช่ไหมล่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-14 13:45:28 By : watcharop
 


 

No. 6



โพสกระทู้ ( 1,600 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 2 เขียนโดย : littlebeer เมื่อวันที่ 2015-08-14 12:34:10
รายละเอียดของการตอบ ::
tr_1 เกิดจาก
'tr_' + ($('#myTable tr').length + 1);
แทนค่า 'tr_' + (0 + 1);
ซึ่งนำไปใช้ไม่ได้ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-14 14:18:08 By : NewbiePHP
 


 

No. 7



โพสกระทู้ ( 200 )
บทความ ( 0 )



สถานะออฟไลน์


เอาหน้าจอ result ที่ต้องการ +
พร้อมระบุความต้องการ +
โค้ดที่เขียนไว้แล้วบางส่วนหรือส่วนที่ติดปัญหา

น่าจะได้คำตอบเร็วขึ้นครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-14 14:21:11 By : CasanovaKung
 


 

No. 8



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : watcharop เมื่อวันที่ 2015-08-14 13:45:28
รายละเอียดของการตอบ ::
ใช่ครับ #barcodeMachine, #memtotal เป็น input



ประวัติการแก้ไข
2015-08-14 14:24:36
2015-08-14 14:31:27
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-14 14:24:07 By : littlebeer
 


 

No. 9



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : NewbiePHP เมื่อวันที่ 2015-08-14 14:18:08
รายละเอียดของการตอบ ::
แล้วยังไงถึงใช้ได้ครับ เพราะเห็นตอนสร้างแถวก็เห็นมันใช้ได้แล้วทำไมอันนี้ใช้ไม่ได้ งง -*-

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-14 14:38:58 By : littlebeer
 


 

No. 10



โพสกระทู้ ( 200 )
บทความ ( 0 )



สถานะออฟไลน์


สร้างตัวแปรเก็บ last row หรือจำนวนแถวสุดท้ายที่เพิ่มเข้าไปเป็นค่าอะไร
เพราะว่าใน function

Code (JavaScript)
var tr_id = 'tr_'+($('#myTable tr').length+1);

จะผิดเพี้ยน แถวที่โดนลบ ไม่ใช่แถวสุดท้าย
จะทำให้ค่า id ซ้ำ ไม่สามารถทำงานได้ในค่าที่ซ้ำ

// เผ่นแปป
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-14 14:52:51 By : CasanovaKung
 


 

No. 11



โพสกระทู้ ( 1,600 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

$("#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
 


 

No. 12



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์


งง หนักเลยครับ -*-
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-14 15:44:52 By : littlebeer
 


 

No. 13



โพสกระทู้ ( 1,600 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

จากโค๊ดตัวอย่าง 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
 


 

No. 14



โพสกระทู้ ( 1,328 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : NewbiePHP เมื่อวันที่ 2015-08-14 14:58:54
รายละเอียดของการตอบ ::
keypress ของ tr ทำงานจริงด้วย

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-14 16:46:46 By : watcharop
 


 

No. 15



โพสกระทู้ ( 1,600 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ในฟังก์ชั่นข้างล่าง
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
 


 

No. 16



โพสกระทู้ ( 464 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่ได้จริง ๆ ครับ งงหนักมาก

ตอบความคิดเห็นที่ : 15 เขียนโดย : NewbiePHP เมื่อวันที่ 2015-08-14 17:10:35
รายละเอียดของการตอบ ::
$("#barcodeMachine, #memtotal, #myTable tr").keypress(function(event) {
var charCode = event.which;
if (charCode <= 13) return true;

var keyChar = String.fromCharCode(charCode);
return /[0-9-]/.test(keyChar);
});

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-08-14 22:35:46 By : littlebeer
 


 

No. 17



โพสกระทู้ ( 212 )
บทความ ( 0 )



สถานะออฟไลน์


ลองดูแบบนี้ครับ
<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
 


 

No. 18



โพสกระทู้ ( 1,600 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

จำได้ว่าเคยทำโค๊ดตัวอย่างไปให้ดูแล้วไม่ใช่เหรอครับ
ว่าต้องกำหนด 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
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถาม selector แบบ var บน jquery ไม่ทำงานครับ รบกวนทีครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





Exchange: Voake, Comcube, ปรึกษากฎหมายฟรี 24 , ขายเครื่องเสียงมือสอง,vps | เช่า vps , รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2018 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
for Contact Us : [Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่