2010-08-05 13 views
7

मैं उपयोगकर्ता द्वारा चुने गए इनपुट स्ट्रिंग का केवल चयनित भाग प्राप्त करने का प्रयास कर रहा हूं। मान लीजिए कि मैं इस इनपुट दो:क्या मैं उपयोगकर्ता को टेक्स्ट फॉर्म इनपुट में चयनित टेक्स्ट पुनर्प्राप्त कर सकता हूं?

<input type="text" name="first_name" id="first_name" value="Enter your name" /> 

और उपयोगकर्ता क्लिक करके और पाठ क्षेत्र में खींचकर दर्ज करें "" शब्द का चयन करता है। क्या मैं उस पाठ को jQuery के साथ पुनर्प्राप्त कर सकता हूं?

मैं जानता हूँ कि मैं पूरी मूल्य इस तरह से प्राप्त कर सकते हैं:

$("#first_name").val(); 

लेकिन अब तक, मैं वैसे भी केवल चयनित "Enter" हिस्सा पाने के लिए नहीं मिला। कोई भी मुझे सही दिशा में इंगित करने में सक्षम है? धन्यवाद!

संपादित

मैं document.getSelection की कोशिश की और यह इस तरह के एक "पी" के रूप में एक स्थिर पाठ तत्व पर फ़ायरफ़ॉक्स में महान काम कर रहा है। यह टेक्स्ट इनपुट पर अब तक मेरे लिए काम नहीं कर रहा है।

आईई में, window.selection.createRange()। टेक्स्ट "पी" और टेक्स्ट इनपुट दोनों पर काम कर रहा है।

+0

शायद http://www.quirksmode.org/dom/range_intro.html का उपयोग कर? – Adam

उत्तर

1
:

$(document).ready(function(){ 
    $("#first_name").focus(function() { 
     $(this).val(""); 
    }); 
}​);​ 

एक उदाहरण देखें

ठीक है यहाँ अंतिम जवाब है। ऐसा लगता है कि जब हम इनपुट या टेक्स्टरेरा के साथ काम कर रहे हैं तो चयन चयन() के बजाय चयन स्टार्ट और चयन अंत का उपयोग करना होगा। यहाँ अपने परीक्षण कोड है:

$(".name").mouseup(function() 
{ 
    var selected_text = ""; 
    if (window.getSelection) // Firefox 
    { 
     var text = $(this).val(); 
     selected_text = text.substring(document.activeElement.selectionStart, document.activeElement.selectionEnd); 
    } 
    else // IE 
    { 
     selected_text = document.selection.createRange().text; 
    } 
    alert(selected_text); 
}); 

और मेरे एचटीएमएल बस है:

<input type="text" name="name" class="name" value="Enter your name" /> 

तो मैं अंत में यह मिल गया। हर किसी के इनपुट के लिए धन्यवाद!

2

This मदद कर सकता है। आपको .select() फ़ंक्शन का उपयोग करने की आवश्यकता होगी।

+0

वह उसे चयनित पाठ प्राप्त करने में मदद नहीं करेगा हालांकि। –

1

आप नियमित जावास्क्रिप्ट प्रतिस्थापन विधि का उपयोग कर सकते हैं।

$("#first_name").val().replace("Enter your name", "") 

एक उदाहरण देखें: http://jsfiddle.net/gezDF/

हालांकि, एक और विकल्प उपयोगकर्ता क्षेत्र में प्रवेश किया जब पाठ दूर करने के लिए हो सकता है। यह निम्नलिखित की तरह कुछ के साथ किया जा सकता है: http://jsfiddle.net/JNmAF/

+0

जब आपका उपयोगकर्ता उस पर क्लिक करता है तो आपका समाधान उस क्षेत्र को खाली कर देगा। मैं फ़ील्ड में चुने गए पाठ को प्राप्त करने का प्रयास कर रहा हूं, जब इसे चुना गया है तो फ़ील्ड को खाली न करें। – Gabriel

+0

पहला समाधान वह करेगा जो आपने पूछा था (मैंने एक उदाहरण जोड़ा)। दूसरा एक और विकल्प था जो समस्या को अलग तरीके से हल कर सकता है। मुझे लगता है कि "अपना नाम दर्ज करें" उपयोगकर्ता को यह समझने में मदद करने के लिए पाठ है कि फ़ील्ड क्या है।यदि ऐसा है, तो उस क्षेत्र को हटाकर जब उपयोगकर्ता फ़ील्ड में प्रवेश करता है तो फ़ील्ड से "अपना नाम दर्ज करें" टेक्स्ट पार्स करने की आवश्यकता को समाप्त कर देगा। – sgriffinusa

3

और इस का उपयोग कर jQuery के चुनिंदा समारोह ऐसा करने में सक्षम होना चाहिए document.getSelection

http://www.devguru.com/Technologies/ecmascript/quickref/doc_getselection.html http://api.jquery.com/select/

+0

document.getSelection सही तरीके से एक कदम प्रतीत होता है, लेकिन स्पष्ट रूप से यह आईई में काम नहीं करता है। क्या आपको पता है कि वहां भी काम करने का कोई तरीका है? – Gabriel

+0

@ गैब्रियल window.getSelection() या document.selection.createRange()। IE के लिए पाठ, एक या दूसरे को काम करना चाहिए मुझे लगता है कि – heisenberg

+0

जैसा कि मैंने अपने संपादन में लिखा है, createRange() के साथ IE संस्करण काम कर रहा है। क्या आपको कोई विचार है कि चयनित टेक्स्ट इनपुट बॉक्स में क्यों फ़ायरफ़ॉक्स संस्करण काम नहीं कर रहा है? धन्यवाद! – Gabriel

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