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

Registered : 109,037

HOME > PHP > PHP Forum > Autocomplete ไม่ทำงาน เมื่อผลลัพธ์ที่ได้มี " หรือ ' อยู่ในข้อความแก้ยังไง



 

Autocomplete ไม่ทำงาน เมื่อผลลัพธ์ที่ได้มี " หรือ ' อยู่ในข้อความแก้ยังไง

 



Topic : 119973



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



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




แต่มีปัญหาตรงที่ว่าเมื่อผลลัพธ์ที่ได้มี " หรือ ' อยู่มันจะกดแล้วไม่เข้าไปใน textbox

autocom

ตามรูปพอจิ้มตัว list หายไปแต่ข้อความที่จิ้มมันไม่เข้าไปใน textbox เพราะตัว "



element มันเป็นแบบนี้ "" มันแยกคำกันมั่วไปหมด แก้ยังไงได้บ้าง ลองหลายวิธีหล่ะ



Tag : PHP, JavaScript, jQuery









ประวัติการแก้ไข
2015-11-17 04:45:14
2015-11-17 04:45:33
2015-11-17 04:46:19
2015-11-17 04:46:46
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-11-17 00:39:10 By : axyz987 View : 2332 Reply : 13
 

 

No. 1



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



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

test.php
Code (PHP)
<html>
<head>
<title></title>

<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.3/themes/smoothness/jquery-ui.css"  type="text/css"/>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
  <input  type="text" id="name" size="50" />
</form>
 <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script>
<script type="text/javascript">
$('#name').autocomplete({

		source: function( request, response ) {
			var name = $('#name').val();
			$.ajax({
				url: 'test2.php',
				dataType: 'json',
				data: {
					q : name
				},
				success: function(data) {
					response($.map(data, function(item) {
						return {
							value : item.name
						};
					}));
				}
			});
		},
		minLength: 2,
		select: function(event, ui) {
			$('#name_th').val(ui.item.value);
		}
	});
</script>

</body>
</html>



test2.php
Code (PHP)
<?php
$db=mysqli_init();
$db->options(MYSQLI_OPT_CONNECT_TIMEOUT, 3600);
$db->real_connect('localhost', 'root', '', 'test');
$db->set_charset('utf8');

//$test = $db->real_escape_string('ทดสอบ "ข้อมูล"');
//
//$sql = $db->query("insert into testing set name = '$test'");
// printf("%d Row inserted.\n", $db->affected_rows);
$q = urldecode($_GET["q"]);
$pagesize = 50; // จำนวนรายการที่ต้องการแสดง
$table_db="testing"; // ตารางที่ต้องการค้นหา
$find_field="name"; // ฟิลที่ต้องการค้นหา
$sql = $db->query("select * from $table_db  where locate('$q', $find_field) > 0 order by locate('$q', $find_field), $find_field limit $pagesize");

while ($row = $sql->fetch_assoc()) {
	$result[] = $row;
}

echo json_encode($result);
$sql->free();
?>



Code (SQL)

CREATE TABLE `testing` (
  `code` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`code`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;




INSERT INTO `testing` VALUES (1,'สก๊อตเทป \"ยูนิเทป\"'),(2,'สก๊อตเทปใส'),(3,'ทดสอบ \"ข้อมูล\"');








แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-17 01:45:03 By : progamer2000
 


 

No. 2

Guest


ตอบความคิดเห็นที่ : 1 เขียนโดย : progamer2000 เมื่อวันที่ 2015-11-17 01:45:03
รายละเอียดของการตอบ ::
ไม่ขึ้นอะไรเลยครับ ไฟล์ test.php เขียนตรงไหนผิดรึป่าวคับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-17 04:09:26 By : axyz987
 

 

No. 3



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



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

Copy ไปครบหรือเปล่าเอ่ย เปลี่ยนฐานข้อมูลที่เชื่อมต่อหรือยัง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-17 08:35:06 By : progamer2000
 


 

No. 4



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



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

กำ ตรง #name_th ล่างสุดเปลี่ยนเป็น #name เฉยๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-17 08:37:43 By : progamer2000
 


 

No. 5

Guest


ตอบความคิดเห็นที่ : 4 เขียนโดย : progamer2000 เมื่อวันที่ 2015-11-17 08:37:43
รายละเอียดของการตอบ ::
ก็ยังไม่ได้อยู่ดีคับ
test2.php มัน echo ออกมา ["\"sadasd","\u0e01\u0e23\u0e23\u0e44\u0e01\u0e23.....]แล้ว แต่ test.php พิมในtextbox แล้วไม่เกิดอะไรขึ้นเลย

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-17 18:02:18 By : axyz987
 


 

No. 6



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



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

คุณเอาไปแปลง ต่อ หรือ copy ของผมไปลองเทส อะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-17 19:00:51 By : progamer2000
 


 

No. 7

Guest


ตอบความคิดเห็นที่ : 6 เขียนโดย : progamer2000 เมื่อวันที่ 2015-11-17 19:00:51
รายละเอียดของการตอบ ::
test.php ก๊อปวางเลยส่วน test2.php เปลี่ยนดาต้าเบส
Code (PHP)
<?php
header('Content-Type: text/html; charset=utf-8');
$db=mysqli_init();
$db->options(MYSQLI_OPT_CONNECT_TIMEOUT, 3600);
$db->real_connect('localhost', 'a_admin', '1234', 'material');
$db->set_charset('utf8');

$sql = $db->query("insert into testing set name = '$test'");

$q = urldecode($_GET["q"]);
$pagesize = 50; // จำนวนรายการที่ต้องการแสดง
$table_db="material"; // ตารางที่ต้องการค้นหา
$find_field="name"; // ฟิลที่ต้องการค้นหา
$query = $db->query("select name from $table_db  where locate('$q', $find_field) > 0 order by locate('$q', $find_field), $find_field limit $pagesize");
while ($row = $query->fetch_assoc()) {
	$result[] = $row['name'];
}

echo json_encode($result);
$query->free();
?>



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-17 19:17:49 By : axyz987
 


 

No. 8



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



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

Code (PHP)
<?php
header('Content-Type: text/html; charset=utf-8');
$db=mysqli_init();
$db->options(MYSQLI_OPT_CONNECT_TIMEOUT, 3600);
$db->real_connect('localhost', 'a_admin', '1234', 'material');
$db->set_charset('utf8');

$q = urldecode($_GET["q"]);
$pagesize = 50; // จำนวนรายการที่ต้องการแสดง
$table_db="material"; // ตารางที่ต้องการค้นหา
$find_field="name"; // ฟิลที่ต้องการค้นหา
$query = $db->query("select name from $table_db  where locate('$q', $find_field) > 0 order by locate('$q', $find_field), $find_field limit $pagesize");
while ($row = $query->fetch_assoc()) {
	$result[] = $row['name'];
}

echo json_encode($result);
$query->free();
?>


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-17 19:31:45 By : progamer2000
 


 

No. 9

Guest


ตอบความคิดเห็นที่ : 8 เขียนโดย : progamer2000 เมื่อวันที่ 2015-11-17 19:31:45
รายละเอียดของการตอบ ::
ไม่ได้เป็นที่ test2.php คับ ผมลองมั่วๆไปเปลี่ยน minLength เป็น 1 ตอนนี้ได้แล้วคับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-17 19:36:04 By : axyz987
 


 

No. 10



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



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

พิมพ์ไป 1 ตัว เองหรอคับ - -" กำหนดไว้ต่ำสุด 2 ตัวไงตอนแรก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-17 19:36:50 By : progamer2000
 


 

No. 11



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



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


ตอบความคิดเห็นที่ : 10 เขียนโดย : progamer2000 เมื่อวันที่ 2015-11-17 19:36:50
รายละเอียดของการตอบ ::
ถามต่อครับ ถ้าจะทำ ของ name เหมือนเดิมในหน้าเดียวกัน แต่เพิ่ม textbox เข้าไปอีกสามารถทำได้ไหมคับ
แล้วถ้าเป็น ของอย่างอื่น เช่น category บลาๆ ในหน้าเดียวก็ไม่น่าจะมีปัญหาใช่ไหมคับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-12-17 01:31:04 By : axyz987
 


 

No. 12



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



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


ทำautocompleteหลายแถวแล้ว
autocom add row1
แต่พอเพิ่มแถวใหม่ แถวที่เพิ่มautocompleteไม่ทำงาน คิดว่าน่าจะต้องไปเรียกฟังชั่นก์ตอนกดปุ่มเพิ่ม พอใส่โค๊ดเพิ่มเข้าไป กดแล้วจอขาว
autocom add row2

โค๊ดHTMLสร้างตาราง และปุ่มเพิ่มลบแถว
Code (PHP)
<table border=1 cellspacing=0 bgcolor='white' width='95%' id='tbl'>
	<tr>
		<td align='center' width='5%'><font size=4>ลำดับที่</font></td>
		<td align='center' width='40%'><font size=4>ชื่อวัสดุ<font color='red' style='font-weight:bold;'>**</font></font></td>
		<td align='center' width='15%'><font size=4>ชนิด</font></td>
		<td align='center' width='10%'><font size=4>จำนวน<font color='red' style='font-weight:bold;'>**</font></font></td>
		<td align='center' width='15%'><font size=4>หน่วยนับ</font></td>
		<td align='center' width='15%'><font size=4>ราคาต่อหน่วย<font color='red' style='font-weight:bold;'>**</font></font></td>
	</tr>
	<?for($i=1;$i<=$n;$i++){?>
		<tr>
			<td align='center'><?echo $i;?></td>
			<td>
				<input type='textbox' style="width:100%" name='name[]' id = 'name<?echo $i;?>' value='' maxlength='255'>
				<input name="h_name" type="hidden" id="h_name<?echo $i;?>" value=""/>
			</td>
			<td>
				<input type='textbox' style="width:100%" name='category[]' id = 'category<?echo $i;?>' maxlength='50'>
				<input name ='h_category' type='hidden' id='h_category<?echo $i;?>' value=''/>
			</td>
			<td>
				<input type='number' min='1' style="width:100%" name='num[]' id = 'num<?echo $i;?>' value=''  onkeypress='return isNumber(event)'>
			</td>
			<td>
				<input type='textbox' style="width:100%" name="unit[]" id='unit<?echo $i;?>' value='' maxlength='50'>
				<input name="h_unit" type="hidden" id="h_unit<?echo $i;?>" value="" />
			</td>
			<td>
				<input type='textbox' style="width:100%" name='price_c[]' id='price_c<?echo $i;?>' value=''  onkeypress='return isDecimal(this)'>
			</td>
		</tr>
	<?}?>
	</table>

<input type="button" value="+" onclick="fncAdd()" id='addrow' class="myButtonPlus">
<input type="button" value="-" onclick="fncDelete()" class="myButtonMinus">


ฟังชั่นก์เพิ่มลบแถว
Code (JavaScript)
<script type="text/javascript">
function fncAdd(){
	var tb = document.getElementById('tbl');
	var tbody = document.createElement('tbody'); 
	var template = tb.getElementsByTagName('tr');
	var current = template.length;
	tb.insertBefore(tbody, null);
	tr = document.createElement("tr");
	tbody.insertBefore(tr, null);

    td =  document.createElement("td");
    var id =  document.createTextNode(current);
	td.setAttribute("align","center");
    td.insertBefore(id, null);
    tr.insertBefore(td, null);

	td =  document.createElement("td");
	var txt = document.createElement('input');
	txt.setAttribute('type','textbox');
	txt.style.width = '100%';
	txt.setAttribute('name','name[]');
	txt.setAttribute('id','name'+current);
	txt.setAttribute('value','');
	txt.setAttribute('maxlength','255');
	td.insertBefore(txt, null);
	tr.insertBefore(td, null);

	var txt = document.createElement('input');
	txt.setAttribute('type','hidden');
	txt.setAttribute('name','h_name');
	txt.setAttribute('id','h_name'+current);
	td.insertBefore(txt, null);
	tr.insertBefore(td, null);

	td =  document.createElement("td");	
	txt = document.createElement('input');
	txt.setAttribute('type','textbox');
	txt.setAttribute('name','category[]');
	txt.setAttribute('id','category'+current);
	txt.setAttribute('maxlength','50');
	txt.style.width = '100%';
    td.insertBefore(txt, null);
	tr.insertBefore(td, null);

	td =  document.createElement("td");	
	txt = document.createElement('input');
	txt.setAttribute('type','number');
	txt.setAttribute('name','num[]');
	txt.setAttribute('min','1');
	txt.setAttribute('id','num'+current);
	txt.setAttribute('onkeypress','return isNumber(event)');
	txt.style.width = '100%';
    td.insertBefore(txt, null);
	tr.insertBefore(td, null);

	td =  document.createElement("td");	
	txt = document.createElement('input');
	txt.setAttribute('type','textbox');
	txt.setAttribute('name','unit[]');
	txt.setAttribute('id','unit'+current);
	txt.setAttribute('maxlength','50');
	txt.style.width = '100%';
    td.insertBefore(txt, null);
	tr.insertBefore(td, null);

	td =  document.createElement("td");	
	txt = document.createElement('input');
	txt.setAttribute('type','textbox');
	txt.setAttribute('name','price_c[]');
	txt.setAttribute('id','price_c'+current);
	txt.setAttribute('onkeypress','return isDecimal(this)');
	txt.style.width = '100%';
    td.insertBefore(txt, null);
	tr.insertBefore(td, null);

	tb.appendChild(tbody);
	make_autocom("name"+current,"h_name"+current); //เพิ่มมาแล้วจอขาว
}
function fncDelete(){
		var tb =document.getElementById('tbl');
		var del = tb.rows.length;
		if(del>2){
			tb.deleteRow(del-1);
		}
}
</script>


ฟังชั่นก์ที่เอาค่าจากไฟล์ auto_name
Code (JavaScript)
<script type="text/javascript">
function make_autocom(autoObj,showObj){
	var mkAutoObj=autoObj; 
	var mkSerValObj=showObj; 
	new Autocomplete(mkAutoObj, function() {
		this.setValue = function(id) {		
			document.getElementById(mkSerValObj).value = id;
		}
		if ( this.isModified )
			this.setValue("");
		if ( this.value.length < 1 && this.isNotClick ) 
			return ;	
		return "auto_name.php?p=" +encodeURIComponent(this.value);
    });	
}
var tb =document.getElementById('tbl');
var max = tb.rows.length;
for(var c=1;c<=max-1;c++){
make_autocom("name"+c,"h_name"+c);
}
</script>


ไฟล์ auto_name คิวรี่ข้อมูลออกจากดาต้าเบส
Code (PHP)
<?php
session_save_path("./session");
session_start();
header('Content-Type: text/html; charset=utf-8');
header("Cache-Control: no-store, no-cache, must-revalidate");       
header("Cache-Control: post-check=0, pre-check=0", false);
require_once('connect.php');
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
$p = urldecode($_GET["p"]);
$pagesize = 5; // จำนวนรายการที่ต้องการแสดง
$table_db="material"; // ตารางที่ต้องการค้นหา
$find_field="name"; // ฟิลที่ต้องการค้นหา
$sql = "select distinct name from $table_db  where locate('$p', $find_field) > 0 and division = \"".$_SESSION['chk_division']."\" order by locate('$p', $find_field), $find_field limit $pagesize";
$results = mysql_query($sql);
while ($row = mysql_fetch_assoc( $results )) {
	$id = $row["name"]; // ฟิลที่ต้องการส่งค่ากลับ
	$name = $row["name"]; // ฟิลที่ต้องการแสดงค่า
	// ป้องกันเครื่องหมาย '
	$name = str_replace('"','"', $name);
	// กำหนดตัวหนาให้กับคำที่มีการพิมพ์
	if($p!="" && $p!='.'){
		$display_name = preg_replace("?(" . $p . ")?i", "<b>$1</b>", $name); 
	}else{
		$display_name = $name;
	}
	echo "<li onselect=\"this.setText('$name').setValue('$id');\">$display_name</li>";
}
mysql_close();
?>


ปล.autocomplete เอามาจากลิงก์นี้ https://www.thaicreate.com/community/ajax-php-mysql-autocomplete-textbox.html


ประวัติการแก้ไข
2015-12-17 17:27:51
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-12-17 17:24:27 By : axyz987
 


 

No. 13



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



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

23.$name = str_replace('"','"', $name);

ลอง แบบนี้ดูครับ

Code (PHP)
$name_for_javascript = addslashes($name);

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-12-17 19:05:49 By : NewbiePHP
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Autocomplete ไม่ทำงาน เมื่อผลลัพธ์ที่ได้มี " หรือ ' อยู่ในข้อความแก้ยังไง
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

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