2008-09-28 18 views
405

हाल ही में मैंने jQuery के साथ खेलना शुरू कर दिया है, और कुछ ट्यूटोरियल का पालन कर रहे हैं। अब मैं इसका उपयोग करने में थोड़ा सक्षम महसूस करता हूं (यह बहुत आसान है), और मैंने सोचा कि यह अच्छा होगा अगर मैं अपने वेबपृष्ठ पर 'कंसोल' बनाने में सक्षम था (जैसा कि आप FPS गेम में अपनी तरह की कुंजी दबाते हैं, इत्यादि), और फिर यह अजाक्स को सामान करने के लिए सर्वर में वापस आ गया है।jQuery को टेक्स्टरेरा टेक्स्ट

मैंने मूल रूप से सोचा था कि टेक्स्टरेरा के अंदर टेक्स्ट प्राप्त करने का सबसे अच्छा तरीका होगा, और फिर इसे विभाजित करें, या मुझे कुंजीपटल ईवेंट का उपयोग करना चाहिए, कुंजीकोड को ASCII वर्ण में वापस परिवर्तित करना, चरित्र को स्ट्रिंग में जोड़ना और सर्वर को स्ट्रिंग भेजें (फिर स्ट्रिंग खाली करें)।

मुझे टेक्स्टरेरा से टेक्स्ट प्राप्त करने के बारे में कोई जानकारी नहीं मिली, मुझे बस कुंजीपटल जानकारी मिली। साथ ही, मैं एक ASCII चरित्र में वापस की गई कुंजीकोड कैसे परिवर्तित कर सकता हूं?

उत्तर

614

आप कुंजी स्ट्रोक को टेक्स्ट में क्यों परिवर्तित करना चाहते हैं? क्लिक करते समय सर्वर पर टेक्स्टरेरा के अंदर पाठ भेजता है जो एक बटन जोड़ें। आप पाठ मान विशेषता का उपयोग कर के रूप में पोस्टर से पहले बताया गया है प्राप्त कर सकते हैं, या jQuery के एपीआई का उपयोग कर:

$('input#mybutton').click(function() { 
    var text = $('textarea#mytextarea').val(); 
    //send to server and process response 
}); 
+2

क्योंकि टेक्स्टरेरा में और अधिक होगा, तो बस पाठ की आवश्यकता होगी। (यह कंसोल है, कमांड प्रॉम्प्ट विज़ुअलाइज़ करें)। वैल फ़ंक्शन पर जानकारी के लिए धन्यवाद। :) – RodgerB

+0

आप जावास्क्रिप्ट का उपयोग कर पाठ को संसाधित कर सकते हैं। कुंजी स्ट्रोक कोड लौटने का क्या मतलब है? –

+0

बिंदु है, आईएमओ, कुंजी स्ट्रोक कोड प्राप्त करना अधिक कुशल होगा, फिर एक डेलीमीटर (टेक्स्ट की संभावित रूप से बड़ी सरणी) द्वारा टेक्स्टरेरा को विभाजित करना। – RodgerB

13

आम तौर पर, यह मूल्य संपत्ति

testArea.value 

है या वहाँ कुछ मैं आपको क्या चाहिए में याद कर रहा हूँ है?

+0

मैं वास्तव में एक टेक्स्टchanged घटना की उम्मीद कर रहा हूं या लाइन के साथ कुछ भी लागू किया जाएगा (मैं इसे कुंजीपटल घटना के साथ आसानी से कर सकता हूं)। मुझे लगता है कि मैं कीप घटना का उपयोग करने के लिए चिपक जाऊंगा, लेकिन क्या आप कुंजीकोड को ASCII char में बदलने के तरीके के बारे में जानते हैं? धन्यवाद। :) – RodgerB

8

मैं निम्नलिखित फ़ंक्शन का उपयोग करके पता लगा है कि मैं एक चरित्र के लिए घटना के कीकोड परिवर्तित कर सकते हैं :

var char = String.fromCharCode(v_code); 

वहां से मैं तो एक स्ट्रिंग के लिए चरित्र संलग्न करेंगे, और जब प्रवेश कुंजी दबाने सर्वर से स्ट्रिंग भेजें। मुझे खेद है कि मेरा प्रश्न कुछ हद तक गूढ़ लग रहा था, और शीर्षक का अर्थ लगभग पूरी तरह से विषय से दूर है, यह सुबह जल्दी है और मैंने अभी तक नाश्ता नहीं किया है;)।

आपकी सभी मदद लोगों के लिए धन्यवाद।

23

आपके पास एक div होना चाहिए जिसमें केवल कंसोल संदेश हों, यानी, पिछले आदेश और उनके आउटपुट। और नीचे एक इनपुट या टेक्स्टरेरा डालें जो आपके द्वारा टाइप किए गए कमांड को रखता है।

------------------------------- 
| consle output ...   | 
| more output     | 
| prevous commands and data | 
------------------------------- 
> This is an input box. 

इस तरह आप प्रोसेसिंग के लिए सर्वर पर इनपुट बॉक्स का मान भेजते हैं, और परिणाम को कंसोल संदेश div में जोड़ते हैं।

+0

हां, ठीक वही मैं क्या सोच रहा था। यह एकमात्र साफ समाधान है जिसमें आउटपुट से इनपुट को बाहर निकालने में शामिल नहीं है (कोशिश करने के लिए मूर्ख - क्या होगा यदि उपयोगकर्ता कुछ "आउटपुट" पर टाइप करता है), या कीस्ट्रोक घटनाओं से स्ट्रिंग बनाने की कोशिश कर रहा है (मूर्खतापूर्ण कोशिश करने के लिए - बैकस्पेस, आदि के बारे में क्या?)। –

+3

एसओ पर एक और एक्सवाई समस्या। यह स्पष्ट रूप से उनकी समस्या के 'एक्स' का सबसे अच्छा समाधान है। – Reimius

7

"कंसोल" शब्द मेथिंक भ्रम पैदा कर रहा है।

$('console').keyup(function(event){ 
    $.get("url", { keyCode: event.which }, ...); 
    return true; 
}); 

event.which महत्वपूर्ण यह है कि दबाया गया था:

आप एक पुरानी शैली पूरी/आधी द्वैध कंसोल अनुकरण करने के लिए चाहते हैं, आप कुछ इस तरह का उपयोग करेंगे। बैकस्पेस हैंडलिंग के लिए, event.which === 8.

18

जहां अक्सर टेक्स्ट फ़ंक्शन आप उपयोग करते हैं (उदा।फिर पाठ क्षेत्र के लिए divs आदि) में यह वैल है

प्राप्त करें:

$('#myTextBox').val(); 

सेट:

$('#myTextBox').val('new value'); 
0

सबसे अच्छा तरीका है:। $ ('# myTextBox') वैल ('नई मान ') ट्रिम()।;

संबंधित मुद्दे