ถามเรื่อง มีวิธีเขียนโปรแกรมโดยที่ไม่ใช่ Textbox เป็นตัวรับค่าได้หรือไม่คะ asp.net
ถ้าบน Web การซ่อนใช้ Display : none ครับ
Date :
2014-08-23 11:43:27
By :
mr.win
เครื่องอ่าน barcode เปรียบเสมือนคีย์บอร์ด ครับ อะไรที่สามารถรับ event keypress ได้ ก็ใช้ได้หมดครับ
ไม่จำเป็นต้องเป็น textbox
<html>
<body onkeypress="">
ประวัติการแก้ไข 2014-08-23 11:57:08
Date :
2014-08-23 11:56:33
By :
Chaidhanan
ขอบคุณค่ะพี่วิน ไปลองมาแล้ว
ไม่รู้ใส่แบบนี้ถูกหรือเปล่า
แต่ลองทดสอบดูมันเหมือนกับใช้ enable กับ visible เลยค่ะ
คือไม่มีปฏิยาอะไรเลย เหมือนมันไม่รับค่าอะไรเลยน่ะค่ะ
แต่ textbox หายไปจริงนะคะ^^
ยังไงก็ขอบพระคุณมากๆเลยค่ะ
Date :
2014-08-23 12:00:03
By :
mayapopy
ขอบคุณคุณ Chaidhanan มากๆค่ะ
แต่พอดีความต้องการที่อยากได้คือ ทำยังไงก็ได้ ให้รับค่า แต่ไม่ต้องเห็น control แต่ลองพยายามดูแล้ว มันต้องเห็น control ถึงจะรับค่าได้น่ะค่ะ
Date :
2014-08-23 13:07:01
By :
mayapopy
Code (VB.NET)
<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="utf-8" %>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script language="javascript">
var txt ='';
function windowkeypress(e){
if(e.keyCode == 13) alert(txt); else txt += String.fromCharCode(e.keyCode);
}
</script>
</head>
<body onkeypress="javascript: windowkeypress(event)" >
test
</body>
</html>
Date :
2014-08-23 13:28:20
By :
Chaidhanan
ได้แล้วค่ะ แต่....
คือว่า ไปทดสอบของคุณ Chaidhanan มา ปรากฏว่าได้ค่ะ ไม่ต้องมี textbox มารองรับก็ได้ แต่มันออกมาเป็น ภาษาต่างดาว แล้วก็อีกอย่าง ต้องไปสร้าง web form ใหม่เลยค่ะ ถึงจะผลออก แต่ถ้าเอามาใช้กับโปรแกรมที่ตัวเองสร้างไว้ มันไม่ออกน่ะค่ะ คงเป็นเพราะว่า เราใช้ masterpage หรือเปล่าก็ไม่รู้ ก็เลยไม่มี tag body อ่ะค่ะ เราเลยไม่รู้จะเอาไปไว้ตรงไหน ก็เลยลองเอาไปไว้ทั้งที่ content และ div แต่มันก็ทำไม่ได้น่ะค่ะ
แบบนี้นะคะ ไปสร้าง web form ใหม่ เป็นต่างดาว
ส่วนแบบนี้ ไม่รู้จะวางไว้ตรงไหน(ขอโทษนะคะ หนูยังไม่ค่อยเก่ง-*-)
ต่อไปก็ขอบคุณพี่วินด้วยค่ะ แต่ลองดูแล้วไม่ได้ผล ไม่รู้ทำไมเหมือนกัน คงไม่เกี่ยวกับพี่วินหรอกค่ะ เกี่ยวกับโค้ดของเราเอง ลองปรับให้มันไป focus แบบนี้แล้วนะคะ
ทั้งตอน Page Load กับ Page Init เลย แต่มันก็ไม่ได้ผลเลยค่ะ อ่านแล้วนิ่ง
ขอบคุณมากๆเลยนะคะ
Date :
2014-08-23 14:05:15
By :
mayapopy
โอ๊ะ พอดีเจอปัญหาใหม่อ่ะค่ะ(จะกลายเป็นเด็กเจ้าปัญหาแระ) ปัญหานี้ยังแก้ไม่ได้เลย^^
แต่มันคงละเรื่องกันสงสัยต้องไปตั้งกระทู้ใหม่
Date :
2014-08-23 14:36:18
By :
mayapopy
Code (JavaScript)
<script language="javascript">
window.onkeypress=windowkeypress; // ตรงนี้แทน body ครับ ใช้ window เป็นตัวรับ
var txt ='';
function windowkeypress(e){
if(e.keyCode == 13) alert(txt); else txt += String.fromCharCode(e.keyCode);
}
</script>
ประวัติการแก้ไข 2014-08-23 14:49:41
Date :
2014-08-23 14:49:26
By :
Chaidhanan
คุณ Chaidhanan หนูทำได้แล้วค่ะ เย้^^ แต่ว่า.....(อีกแล้ว)
คือลองตามที่คุณ Chaidhanan บอก ปรากฏว่ามันออกแล้ว ไม่ต้องใช้ textbox แล้วก็ได้ แต่ว่า เราต้องสั่งให้มันกดปุ่มด้วยอ่ะค่ะ ข้างในมีปุ่ม submitbtn อยู่
ตามโค้ด ทำแบบนี้ได้ (แต่คราวนี้ไม่ออกเป็นต่างดาว ไม่รู้ทำไม)
แต่ว่า มันเป็นแบบ alert ใช่ไหมคะ แต่เราอยากได้ให้มันไปกดปุ่มอ่ะ ปกติจะใช้วิธี TextBox1.Attributes.Add("onkeyDown", "return AnyInput_KeyDown(event,'Submitbtn')") แบบนี้เอาอ่ะคะ
พยายามจะดัดแปลงแล้ว แต่งงค่ะ^^
เอาฟังชั่น กดปุ่มไปแทนที่ จะ attributes ยังไง รบกวนอีกนิดนึง
ส่วนของพี่วิน มีประโยชน์มากๆเลยค่ะ ถึงจะใช้กับ textbox ไม่ได้ แต่ใช้กับ control button ได้ค่ะ ทำให้มองไม่เห็น แต่ก็สามารถกดได้ด้วยค่ะ ขอบคุณมากๆเลยนะคะ
Date :
2014-08-23 15:30:34
By :
mayapopy
ตรงนี้ของบอกไว้ก่อนนะครับว่า ถ้าใช้ window event keypress ต้องควบคุม event ให้ดี
ลองโค๊ดตัวนี้ก่อนดีกว่า ดูการทำงานของ event ก่อนนะครรับจะได้ ทำงานได้ถูก
Code (VB.NET)
<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="utf-8" %>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script language="javascript">
window.onkeypress=windowkeypress;
var txt ='';
function windowkeypress(e){
if(e.keyCode == 13) alert(txt); else document.getElementById('test').innerHTML += String.fromCharCode(e.keyCode);
}
</script>
</head>
<body>
test
<input type="text" />
<p id="test"></p>
</body>
</html>
ทดลอง เปิดโปรแกรม ปั๊บก็กดแป้นพิมพ์ เสร็จแล้ว คลิกที่ textbox แล้วกดแป้นพิมพ์
เสร็จแลว คลิกที่พื้นที่ว่างๆ เพื่อไม่ให้โฟกัสที่ textbox แล้วกดแป้นพิมพ์
ดูการแสดงผลของมันครับถ้าควบคุมมันได้ค่อยว่ากันต่อนะครับ
ผมแค่แสดงตัวอย่างการทำงานเฉยๆ แต่ไ่ม่อยากให้ใช้วิธีนี้ เพราะ 55555 ระดับโปรฯยังไม่ค่อยอยากใช้เลยครับ
Date :
2014-08-23 17:43:07
By :
Chaidhanan
Date :
2014-08-24 08:29:31
By :
mr.win
ขอบคุณ คุณ Chaidhanan มากๆเลยนะคะ ได้เอาไปทดลองทำแล้ว แล้วก็เข้าใจการทำงานของมันแล้วค่ะ
ที่นี่ก็ต้องขอโทษที่ตอบช้านะคะ พอดี ลองเอาไปดัดแปลงตั้งแต่เช้า จนถึงตอนนี้ ก็ยังไม่มีวิธีเลยค่ะ
ตอนแรกๆใช้วิธี เอา textbox ของ asp มารับค่า แต่พอทำให้ textbox มัน display : none แล้ว มันก็ใช้ไม่ได้อยู่ดีค่ะ แบบนี้
Code (JavaScript)
function windowkeypress(e) {
if (e.keyCode == 13) {
document.getElementById('<%=TextBox1.ClientID%>').value = txt
alert(txt)
txt = ''
} else {
txt += String.fromCharCode(e.keyCode)
}
}
- แล้วก็ลองอีกวิธีนึง คือลอง เอาค่าใส่ Input text ที่คุณ Chaidhanan มาใส่ตัวแปร มันก็ทำได้นะคะ แบบนี้
Code (VB.NET)
Dim strvalue As String = Page.Request.Form("text").ToString
- แต่ไม่รู้จะซ่อนตัว Input text ยังไง เพราะไม่งั้นก็ไม่ต่างอะไรกับ textbox แต่พอคิดอีกที ถ้าซ่อน Input text ก็น่าจะรับค่าไม่ได้เหมือน textbox (เดาเอานะ)
- แล้วก็ลอง ใช้ตัว Hidenfield พอดีตัวนี้ยังไม่ค่อยมีความรู้ ลองใช้ใน Code behind แล้วมันมองไม่เห็น ทั้งๆที่เป็นคอนโทรล asp
- ตอนนี้เลยพยายามหาวิธีให้ java ส่งค่าไป alert แล้วให้ Code behind ไปรับค่า แต่ลองไปหาข้อมูลมันทำไม่ได้อีกอ่ะค่ะ เพราะตามข้อมูลบอกว่ามันทำงานคนละช่วงเวลากัน
- แล้วก็หาข้อมูลไปเรื่อยๆ ก็มีคนบอกว่าต้องใช้เป็นเรื่องของ Ajax แล้ว ก็เลยหยุดก่อนค่ะ เพราะรู้สึกจะไปไกลแล้ว เลยพอก่อน เดี๋ยวค่อยไปหาความรู้เรื่อง Ajax อีกที
สรุปตอนนี้ เข้าใจเรื่องของ ที่คุณ Chaidhanan บอกแล้วค่ะ แต่ยังเอามาประยุกต์ใช้ไม่ได้ ยังไงก็ขอบคุณมากๆเลยนะคะ คุณ Chaidhanan
Date :
2014-08-25 13:06:54
By :
mayapopy
มี TextBox รับน่ะ ดีแล้ว
เพราะบางครั้งเครื่องอ่าน Barcode ทำงานไม่ได้ ด้วยเหตุผลที่เราไม่อาจเดาล่วงหน้าได้
อย่างน้อยเราก็มี TextBox ไว้รองรับปัญหานี้
Date :
2014-08-25 13:12:43
By :
watcharop
ขอบคุณ คุณ หางอึ่ง ค่ะ (ไม่ได้เจอกันนานเลยนะคะ)
พอดี user ต้องการให้หน้านี้ แสดงข้อมูลผู้เข้าร่วมงาน แล้วโชว์ให้ลูกค้าดูน่ะค่ะ เขาเลยอยากให้เป็นหน้าจอแสดงผลอย่างเดียว ประมาณว่า โหลดเพจมาแล้ว รับค่า --อ่านค่าจากฐานข้อมูลมาแสดงเลย
พยายามลองหาวิธีอื่นดูเหมือนกัน แต่ยังหาไม่ได้เลย ไม่รู้คนอื่นทำยังไงกัน ใครมีวิธีอื่นๆ เราขอแนวทางหน่อยสิคะ
Date :
2014-08-25 13:53:54
By :
mayapopy
ทำได้แล้วค่ะ อิอิ^^ เราเปลี่ยนมาใช้ คุ๊กกี้แทนอ่ะ เอา function ที่คุณ Chaidhanan มาประยุกต์ แล้วก็เก็บค่าเป็น cookie แล้วใน codebehind เราก็เรียกคุ๊กกี้มาใช้ แต่เราไม่ได้สร้างคุ๊กกี้อื่นมารับค่าต่อ ให้มันเขียนทับตัวเดิมตลอด เลยคิดว่าไม่น่าจะมีผลทำให้เครื่องทำงานหนักนะ
แต่สรุป ผลออกมาก็โอเคแล้ว ไม่ต้องใช้ textbox รับค่าแล้วค่ะ^^
Date :
2014-08-25 16:59:23
By :
mayapopy
มันมีหลากหลายวิธี ดังนี้ครับ เลือกเอาสักอย่างหนึ่ง
1. ใช้ Node.js
2. ใช้ SignalR
3. AJAX CALL Webservice
4. AJAX CALL Generic Handler
5. อีกเยอะเลยครับ
Code (JavaScript)
Jquery change() {
...
...
...
}
ปล. อย่าไปยึดติดกับวิธีใดวิธีหนึ่ง (โดยส่วนตัวผมเลือก SignalR )
ประวัติการแก้ไข 2014-08-26 11:14:14
Date :
2014-08-26 11:13:33
By :
หน้าฮี
ง่า T_T ขอโทษนะคะ ที่ตอบช้า พอดีเจอปัญหาใหม่ แก้ไม่ได้สักที
ตอบคุณ หน้าฮี นะคะ ยอมรับเลยว่า เราไม่เก่งค่ะ ถ้าเราทำอะไรผิดก็ขอโทษละกันนะคะ ยังไงก็ช่วยแนะแนวทางให้ด้วยก็จะขอบพระคุณอย่างมากเลยค่ะ
ส่วนเรื่องที่แนะนำ เดี๋ยวจะลองไปหาข้อมูลดูนะคะ สนใจเรื่อง SignalR เหมือนกัน แต่เท่าที่หาข้อมูลคร่าวๆ(ไม่รู้ถูกหรือเปล่า) น่าจะใช้กับ vs2012 ใช่หรือเปล่าคะ พอดีเรายังใช้แค่ 2010 อยู่เลย
ยังไงก็ขอบคุณมากๆเลยนะคะ แล้วก็ขอโทษถ้าหากเราทำอะไรไม่ดีละกันนะคะ เราโง่มากอ่ะ แต่ก็จะพยายาม
Date :
2014-08-26 17:24:27
By :
mayapopy
Load balance : Server 02