2010-09-16 17 views
7

में टेक्स्टरेरा के लिए काम नहीं करता है मैं jQuery का उपयोग कर एक मोडल संवाद प्रदर्शित कर रहा हूं। इस संवाद में textarea नियंत्रण है। लेकिन इस संवाद को सबमिट करते समय, इस textarea का मान किसी कारण से jQuery द्वारा मान्यता प्राप्त नहीं है: यह हमेशा खाली आता है। यह अन्य ब्राउज़रों में पूरी तरह से काम करता है। मैंने मूल्य प्रदर्शित करने के लिए चेतावनी दी लेकिन यह खाली दिखता है। क्या कोई इस संबंध में मेरी मदद कर सकता है?JQuery val() ओपेरा

नियंत्रण:

<input type="text" id="txtGroupName"/> 
<textarea rows="3" cols="30" id="txtDescription"></textarea> 

jQuery कोड जो इस मान का उपयोग किया:

var postData = new Object(); 
postData.GroupName = $('#txtGroupName').val(); 
postData.Description = $('#txtDescription').val(); 

$('#txtDescription').val() खाली आता है लेकिन के रूप में यह एक इनपुट क्षेत्र है $('#txtGroupName').val() सही ढंग से पढ़ा जाता है। इस समस्या के बारे

एक और खोज:

जब मैं पृष्ठ लोड पर नियंत्रण मूल्य को आबाद करने के बाद मेरे अद्यतन समारोह में अलर्ट, इस चेतावनी को ठीक से मौजूदा मूल्य प्रदर्शित करता है। लेकिन यह केवल मौजूदा मूल्य प्रदर्शित करता है। यह मोडल बॉक्स सबमिट करने के बाद संपादित मूल्य प्रदर्शित नहीं करता है।

+0

आप किस ब्राउजर/प्लेटफ़ॉर्म का उपयोग कर रहे हैं? –

+1

मैं ओपेरा 10.53 का उपयोग कर रहा हूं और मेरा ओएस विंडोज 7 है। –

+0

मैं विंडोज़ भाग के साथ जरूरी नहीं मदद कर सकता, लेकिन मैं अपने उबंटू बॉक्स पर ओपेरा स्थापित करूंगा और देख सकता हूं कि मैं कुछ भी उपयोगी के साथ आ सकता हूं। Jsbin डेमो (' ') पर फ़ॉर्म में डिफ़ॉल्ट पाठ जोड़ने के बाद –

उत्तर

3

के लिए खेद है कि मैं इस का उपयोग करते हुए इस पाठ क्षेत्र में स्क्रिप्ट के अंत में

$("#descripcion").keydown(function(){ 
    $("#descripcion").css("display","block"); 
}); 

डाल दें। मैं मेरी अंग्रेजी

+0

धन्यवाद @ जेवियर ..! यह सही दृष्टिकोण है .. –

1

क्या आपने .attr("text") या .attr("value") को आजमाया है? मैं इसका परीक्षण करने में असमर्थ हूं लेकिन यह मेरे लिए तार्किक प्रतीत होता है।

यदि यह मुझे नहीं बताता है और मैं यह जवाब हटा दूंगा।

+0

टेक्स्ट 'अपरिभाषित' देता है और मान खाली देता है –

+0

मैंने नवीनतम प्रश्नों के साथ अपना प्रश्न अपडेट किया है .. –

0

टेक्स्टरेरा में कोई मूल्य विशेषता नहीं है।

$('#txtDescription').text(); 
+1

दुर्भाग्यवश पाठ() भी काम नहीं कर रहा है –

+3

आप सही हैं कि इसमें HTML में कोई मान विशेषता नहीं है, लेकिन मुझे पूरा यकीन है jQuery की 'वैल()' टेक्स्ट नोड को वापस रखेगी। – alex

+0

मैंने अपने प्रश्न को नवीनतम निष्कर्षों के साथ अपडेट किया है .. –

0

मैंने पाया, क्रोम 6.0.472.59, फ़ायरफ़ॉक्स 3.6.9 और ओपेरा 10.62 में, सभी का उपयोग करने के उबंटू 10.04 पर, textarea है कि कोशिश करो/.val() विशेषता का उपयोग। ऑफ-मौके पर कि कुछ अन्य ब्राउज़र नहीं करते हैं, या नहीं, मैं इस jsbin demo को एक साथ रखता हूं। हालांकि, मैंने दोनों दृष्टिकोणों को कवर करने के लिए if/else ब्लॉक का उपयोग किया था। शायद ज़रुरत पड़े ...

$(document).ready(
    function() { 
    $('form').submit(
    function() { 

     if ($('textarea').val()) { 
     var means = 'val()', 
     textValue = $('textarea').val(); 
     } 
     else { 
     var means = 'text()', 
     textValue = $('textarea').text(); 
     } 

     alert('(' + means + ') ' + textValue); 

     return false; 
    } 
    ); 
    } 
); 

यह Stackoverflow सवाल (jQuery get textarea text) भी पता चलता है कि यह संभव है और विश्वसनीय होना चाहिए के रूप में पहली टिप्पणीकार jQuery.com पर, Val() के लिए API पृष्ठ पर करता है।

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

+1

दृष्टिकोण के लिए धन्यवाद। लेकिन बात यह है कि पाठ() के साथ-साथ वैल() यहां काम नहीं कर रहे हैं। –

+0

@ एनील: आप * निश्चित * हैं कि यह '$ ('textarea') है। Val(); 'बिट जो काम नहीं कर रहा है?मुझे एहसास है कि यह सबसे वैचारिक जगह नहीं है जिसके लिए मुझे संदर्भ करना चाहिए, लेकिन '.val()' फ़ंक्शन/विधि के लिए http://api.jquery.com/val/ पर एक टिप्पणीकर्ता सुझाव देता है कि * काम * करना चाहिए (जाहिर है, उबंटू पर क्रोम और एफएफ के मामलों में)। –

+0

मैंने $ ("# txtDescription") का उपयोग किया। वैल() क्योंकि यह मेरे नियंत्रण की आईडी है। लेकिन काम नहीं कर रहा है। क्या आप चाहते हैं कि मैं इसके बजाय $ ('textarea') का उपयोग करूं? मैंने माना कि 'textarea' को मेरे नियंत्रण आईडी द्वारा प्रतिस्थापित किया जाना चाहिए। –

0

मूल्य या एक पाठ क्षेत्र प्राप्त करने के लिए ओपेरा में ही काम करता है:

document.getElementById ("विवरण") मूल्य;।

अजीब है कि $ ("textara # वर्णन")। वैल ("") काम करता है (सेट विधि)

+0

फ़ायरफ़ॉक्स में वही, मुझे '$ (" textarea # myelement ") का उपयोग करने की आवश्यकता है। वैल (" "); 'पता नहीं क्यों। – Dex

1

आप हो सकता है एक बहुत ही अस्पष्ट ओपेरा पर एक ब्लॉग पोस्ट में कहा गया है बग भर में आ गए हैं साइटपैचिंग ब्लॉग 1 "पैच -287 के रूप में, स्क्रिप्ट बनाने के लिए हैक को blog.ebuddy.com पर टेक्स्टटेरा में टाइप किया गया मान देखें। ओपेरा पहले छिपे हुए टेक्स्टरेरा से सही मान पढ़ने में विफल रहता है"।

हालांकि मैं पूर्ण कोड को देखे बिना वर्कअराउंड को पुनः संयोजित करने में थोड़ा अनिच्छुक हूं।

3

वैल() और पाठ() jQuery में सही ढंग से काम करता है, लेकिन पाठ क्षेत्र का मूल्य निर्धारित करने के बाद आप rerender पाठ क्षेत्र की जरूरत है, आप इस तरह के रास्ते

if ($.browser.opera) 
    $('textarea').val(someText).css({display:block}); 
else 
    $('textarea').val(someText); 

नमस्कार रूस में इस सेटिंग सीएसएस संपत्ति कर सकते हैं। मेरी अंग्रेजी =)

1

शुभ दिन लोगों के लिए माफी चाहता हूँ,

मैं भी ओपेरा 10.63 और Windows के साथ एक ही समस्या है।

जेवियर कैनिज़लेज़ द्वारा सुझाए गए हैक काम करता है, लेकिन केवल तब तक जब तक मैं संवाद (और टेक्स्टरेरा) का पुन: उपयोग नहीं करता हूं। बहरहाल, मामला यह नहीं। अपने हैक के साथ, पृष्ठ लोड होने के बाद और मैं किसी आइटम पर क्लिक करता हूं, मैं एक संवाद प्रदर्शित करता हूं जो पहले छिपा हुआ था (डिस्प्ले: कोई नहीं) इसके अंदर टेक्स्टरेरा के साथ। सबकुछ पहली बार ठीक है (हैक के साथ)। संवाद/* $ (संवाद) बंद करने के बाद। छुपाएं()); */और किसी अन्य आइटम पर क्लिक करके इसे फिर से उपयोग कर रहा है, हैक अब और काम नहीं करता है और जावास्क्रिप्ट/jQuery को पूर्ण टाइप रीलोड तक अब तक नया टाइप किया गया मान नहीं मिलता है।

मुझे ऊपर दिए गए लिंक में से एक में पाया गया है कि ओपेरा के लोगों ने उस समस्या को ठीक कर दिया है: पैच -287 लेकिन यह मेरे लिए तय नहीं लगता :) मैंने वहां एक प्रश्न लिखा और देखेंगे कि वे जवाब देंगे या नहीं : opera patch-287

क्या कोई इस पर काम करने में कामयाब रहा है?

धन्यवाद और शुभकामनाएं। विशेषता नाम के बजाय id के आधार पर


if (window.opera) 
{ 
    document.addEventListener('focus', function(event){ 
    if (event.target instanceof HTMLTextAreaElement) 
    { 
     event.target.contentEditable = true; 
     event.target.contentEditable = false; 
    } 
    }, true); 
} 
0

मैं इस समाधान का उपयोग करें।

<textarea id="txtDescription" name="txtDescription"></textarea> 
<script> 
    jQuery("textarea[name='txtDescription']").val(); 
</script> 
संबंधित मुद्दे