2011-09-08 10 views
7

पर जाना चाहिए, मैं एक चैट बॉक्स (टेक्स्टरेरा) रखना चाहता हूं, जहां उपयोगकर्ता एंटर दबाता है तो उसे चैट सबमिट करना चाहिए, और यदि उपयोगकर्ता Shift + Enter दबाता है तो यह एक नई लाइन में प्रवेश करना चाहिए।टेक्स्टरेरा में एंटर दबाकर मूल्य सबमिट करें और Shift + Enter दबाकर अगली पंक्ति

मैंने कुछ कोशिश की लेकिन सटीक कीप या कीडाउन चीज़ को समझने में सक्षम नहीं है। कोड मैं इस समय का उपयोग कर रहा है:

$("textarea").keydown(function(e){ 
    if (e.keyCode == 13 && !e.shiftKey) 
    { 
     e.preventDefault(); 
    } 
}); 

jsFiddle

इसके अलावा, मैं जगह में \n पाने के लिए जब दर्ज + Shift कुंजी दबाने चाहते हैं।

संपादित मेरी कोड के साथ

जारी करना है: -

जब मैं कर रहा हूँ का उपयोग कर का उपयोग कर ग्राहक पर सामग्री की जांच चेतावनी तो यह अगली पंक्ति को दर्शाता है। लेकिन जब मैं इसे पोस्ट कर रहा हूं तो मेरी रेल वापस आ जाएंगी। फिर यह सिर्फ एक साधारण स्ट्रिंग है। वहां कोई नई लाइन चीज नहीं है।

इस प्रकार मैं रेल सर्वर पर चैट भेज रहा हूं।

$.post("/incomingchat", { body:$("#chat_" + group_id).val() }, 
    function(data){ 
     // do something.. 
    }); 
+6

कृपया ** ** ** jsfiddle से लिंक न करें; हमेशा प्रश्न में कोड भी शामिल करें। – Matt

+1

आपके द्वारा पोस्ट किए गए कोड में क्या गड़बड़ है? मेरे लिए यह वर्णन करता है जैसा आपने वर्णन किया है? http://jsfiddle.net/Su5ts/25/ – ChrisR

+1

@ मैट क्षमा करें, इस बात को ध्यान में रखेगा। –

उत्तर

2

मैंने पहले इसका उत्तर दिया है। यह थोड़ा मुश्किल है कि अगर कैरट पाठ क्षेत्र के अंत में नहीं है:

How do I detect "shift+enter" and generate a new line in Textarea?

+0

समस्या तब होती है जब मैं अपने बैकएंड सर्वर पर Jquery का उपयोग करके इस डेटा को पोस्ट कर रहा हूं। मैं एंटर + शिफ्ट कुंजी कैसे पहचान सकता हूं? बिना किसी प्रविष्टि के + + शिफ्ट कुंजी –

+0

@ मोहित: मुझे समझ में नहीं आता है। Shift + enter दबाए जाने के बाद टेक्स्टरेरा का मान एक लाइन ब्रेक होगा और जब आप पोस्ट करते हैं तो यह लाइन ब्रेक निश्चित रूप से सर्वर पर सबमिट किया जाएगा। –

+0

@ टिमडाउन: मेरे पास एक संबंधित प्रश्न है। क्रोम में, यदि कुंजी दर्ज करते समय मैं कुंजीपटल ईवेंट को संभालता हूं तो नया लाइन वर्ण '\ n' जोड़कर दबाया जाता है, और यदि टेक्स्टरेरा स्क्रोल करने योग्य है, तो स्क्रॉलबार काम नहीं करेगा, मेरा मतलब है कि अगर मैं एंटर कुंजी दबाता हूं, तो टेक्स्टरेरा स्क्रॉल नहीं करता है जब मैं टाइप करता हूं। क्या आपको इस समस्या का कोई विचार है? –

3
$("textarea").keydown(function(e) 
{ 
    if (e.keyCode == 13) 
    { 
     if (e.shiftKey) { 
      $(this).val($(this).val() + "\n"); 
     } 
     else { 
      submitTheChat(); 
     } 
    } 
}); 
+0

समस्या यह है कि जब मैं अपने बैकएंड सर्वर पर Jquery का उपयोग करके इस डेटा को पोस्ट कर रहा हूं। मैं एंटर + शिफ्ट कुंजी कैसे पहचान सकता हूं? बैक एंड पर बिना प्रवेश के समान + शिफ्ट कुंजी –

1

बजाय कुंजी दबाने घटना उपयोग पर विचार करें। यदि आप jsfiddle में कोड चलाते हैं, तो आप देखेंगे कि जब आप एंटर दबाते हैं तो एक नई लाइन नहीं जोड़ा जाता है।

$("textarea").keypress(function(e){ 
    if (e.keyCode == 13 && !e.shiftKey) 
    {   
     e.preventDefault(); 
     //now call the code to submit your form 
     alert("just enter was pressed"); 
     return; 
    } 

    if (e.keyCode == 13 && e.shiftKey) 
    {  
     //this is the shift+enter right now it does go to a new line 
     alert("shift+enter was pressed");   
    }  
}); 
+0

समस्या तब होती है जब मैं अपने बैकएंड सर्वर पर Jquery का उपयोग करके इस डेटा को पोस्ट कर रहा हूं। मैं एंटर + शिफ्ट कुंजी कैसे पहचान सकता हूं? बिना किसी प्रविष्टि के + पिन की स्थिति –

+0

ठीक है, मैं ठीक देखता हूं। उस मामले में मैं टिम डाउन की प्रतिक्रिया को देखने का सुझाव देता हूं कि उसने ऊपर पोस्ट किया है। – pedrodg

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