2012-01-19 16 views
21

मेरे पास एक चैट है जो स्पष्ट कारणों से टेक्स्ट के बजाय टेक्स्टरेरा का उपयोग करती है। यही कारण है कि प्रत्येक बार जब सदस्य ENTER दबाते हैं तो उन्हें संदेश भेजने की बजाय एक नई पंक्ति मिलती है। मैं इसे बदलना चाहता हूं, इसलिए हर बार जब उन्होंने ENTER = संदेश सबमिट किया और फिर कर्सर को उनके अगले संदेश टाइपिंग के लिए टेक्स्टरेरा पर वापस लौटने के लिए दबा दिया। मैंने इस साइट पर पाए गए विभिन्न कोडों का प्रयास किया है, अधिकांश ने काम नहीं किया है और जो कुछ ऐसा करने लगते थे वे केवल पृष्ठ को रीफ्रेश कर रहे थे और मुझे एक खाली पृष्ठ मिला।टेक्स्टटेरा में "एंटर" कुंजी कैसे बनाएं

मेरे कोड:

<form name="message" action=""> 
    <textarea name="usermsg" autocomplete="off" type="text" id="usermsg" rows="4" cols="30" style="width: 450px; margin-left: 25px;"> 
    </textarea> 
    <br/> 

    <p style="margin-left: 420px;"><input name="submitmsg" type="submit" id="submitmsg" value="Send" /></p> 
</form> 

आपके समय के लिए बहुत बहुत धन्यवाद।

+1

क्या प्रोग्रामिंग भाषा आप? HTML के बारे में बात कर रहे हैं? – gorootde

+0

Php प्रोग्रामिंग भाषा है। – Ingrid

+1

प्रोग्रामिंग भाषा यहां अप्रासंगिक होना चाहिए क्योंकि यह क्लाइंट साइड अनुरोध है। –

उत्तर

15

मैं कैसे jQuery के साथ यह करने के लिए पर एक उदाहरण है और keypress समारोह और which संपत्ति के साथ एक jsfiddle बनाया है: http://jsfiddle.net/GcdUE/

नहीं

यकीन है कि आप इस से अधिक के लिए वास्तव में क्या कह रहे हैं, तो अपने प्रश्न का आगे निर्दिष्ट करें अगर संभव हो तो।

$(function() { 
    $("#usermsg").keypress(function (e) { 
     if(e.which == 13) { 
      //submit form via ajax, this is not JS but server side scripting so not showing here 
      $("#chatbox").append($(this).val() + "<br/>"); 
      $(this).val(""); 
      e.preventDefault(); 
     } 
    }); 
}); 
+0

एंडर्स, यह काम करता है लेकिन संदेश केवल एक सेकंड के लिए रहता है और फिर चैट से गायब हो जाता है। – Ingrid

+0

ठीक है, मेरी चैट के साथ फिट करने के लिए कुछ संपादित किया गया है और आपका कोड पूरी तरह से काम करता है, धन्यवाद, आप सबसे दयालु हैं! – Ingrid

+0

खुशी है कि मैं मदद कर सकता हूं। :) –

5

ठीक है, मान आप jQuery उपयोग कर रहे थे यह आपके इनपुट क्षेत्र पर एक साधारण श्रोता होगा:

< से पहले अपने पाद लेख में/शरीर >:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#usermsg').keypress(function(e){ 
     if(e.which == 13){ 
      // submit via ajax or 
      $('form').submit(); 
     } 
    }); 
}); 
</script> 

अपने html सिर में इस जोड़ें:

<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js" type="text/javascript" charset="utf-8"></script> 

लेकिन यदि जेएस या jquery प्रश्न से बाहर है तो शायद इसे अपने प्रश्न को विशेष रूप से बाहर करने के लिए अपडेट करें।

+0

मैंने कोशिश की लेकिन काम नहीं लग रहा है या मुझे बस यह नहीं पता कि यह सही कैसे करें। क्या मुझे कोड से कुछ बदलने की ज़रूरत है? ty – Ingrid

+0

मैंने अपना जवाब अपडेट किया। क्षमा करें, मैं अपनी आईडी को textarea में जोड़ना भूल गया। –

+0

ठीक है, अब इसकी प्रतिक्रिया थी, ऐसा लगता है जैसे मैंने इसे सही तरीके से डाला लेकिन मुझे रीफ्रेश जैसे रिक्त पृष्ठ मिलते हैं। – Ingrid

-2

उपयोग <input type=text> बजाय <textarea>। तो आपके पास बहुत बेहतर संभावनाएं हैं। textarea में, एंटर मारना टेक्स्ट में एक लाइन ब्रेक का मतलब है, पाठ जमा नहीं करना।

+0

हां, मुझे पता है, यह टेक्स्ट होता था लेकिन यह चैट के लिए एक समस्या है जहां लंबी पोस्ट बनाई जाती है (जैसे इस टिप्पणी बॉक्स में), केवल एक पंक्ति है। जवाब देने के लिए समय लेने के लिए धन्यवाद। – Ingrid

19

प्रयास करें इस (ध्यान दें कि जब आप ENTER प्रस्तुत जाते हैं, लेकिन SHIFT + नई लाइन जाना ENTER दबाएँ।

$("#textareaId").keypress(function (e) { 
    if(e.which == 13 && !e.shiftKey) {   
     $(this).closest("form").submit(); 
     e.preventDefault(); 
     return false; 
    } 
}); 
+0

आप एक भगवान हैं धन्यवाद !! –

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