2009-12-18 43 views
8

पर लिखने के बाद जावास्क्रिप्ट के साथ टेक्स्टरेरा अपडेट नहीं किया जा सकता है, मैं एक ऑनलाइन एप्लिकेशन लिख रहा हूं जहां मैं डेटाबेस में कुछ ग्रंथों को सहेजता हूं।
5 "textarea" -s और 5 "इनपुट प्रकार = टेक्स्ट" -s की तरह हैं।
मैं डीबी प्रविष्टियों को आसानी से ढूंढने और संपादित करने के लिए एक खोज को भी कार्यान्वित कर रहा हूं। एक नई चुनिंदा विंडो प्रदर्शित होती है (प्रोटोटाइप और AJAX का उपयोग करके), और जब भी इसकी किसी भी प्रविष्टि पर क्लिक किया जाता है, तो नीचे का फॉर्म पॉप्युलेट हो जाता है (यह वही फ़ॉर्म है जिसका उपयोग नए नतीजे जोड़ने के लिए किया जाता था)। अब यहां समस्या उत्पन्न होती है ....
यदि मैं कोई नया फॉर्म जोड़ता हूं या किसी भी मौजूदा को संपादित करता हूं तो सभी टेक्सटेरिया फ़ील्ड जिन्हें संशोधित किया गया था, लॉक हो या कुछ ऐसा हो (केवल टेक्स्टरेस, इनपुट अभी भी काम करते हैं) ... वे जावास्क्रिप्ट का पालन नहीं करेंगे। अब अद्यतन करें, इसलिए जब मैं अगली प्रविष्टि का चयन करता हूं तो वे नहीं बदलते .... या कम से कम वे फ़ायरफ़ॉक्स (3.5.something) में हैं। यह आईई में ठीक काम करता है, लेकिन चूंकि मैं एक एफएफ उपयोगकर्ता हूं और मैं वहां काम नहीं करता हूं, साथ ही मैं सोच रहा हूं कि कोई भी इसी तरह की समस्याओं में आया है और इसे आसानी से हल किया है।
जब मैं form.reset() को कॉल करता हूं, तो समस्या दूर जाने लगती है, लेकिन यह डेटा को बनाए रखने के लिए कुछ कोड उत्पन्न किए गए विकल्प के अलावा कुछ कोड उत्पन्न करता है।मैन्युअल रूप से

मेरे लिए ऐसा लगता है कि एफएफ ने फैसला किया है कि मैंने जो पाठ दर्ज किया है, वह टेक्स्ट जावास्क्रिप्ट दर्ज करने की कोशिश कर रहा है, इसलिए यह इसे ओवरराइड करता है ... और मैं यह नहीं समझ सकता कि क्यों। इस बिंदु पर मैं .update() को दोष दे रहा हूं, लेकिन मुझे यकीन नहीं है कि इसे अन्यथा कैसे किया जाए।
INPUT फ़ील्ड में .update (या यह मेरे लिए काम नहीं करता) के साथ समस्याएं प्रतीत होती हैं, इसलिए मुझे उन्हें .value = को फिर से लिखना पड़ा ((कोशिश की गई है। Textareas के साथ अंतराल, उम्मीद है कि कुछ भी ठीक करेगा, दुख की बात नहीं है)।

तो, क्या किसी के पास कोई संकेत है कि यह क्यों हो रहा है और इसे कैसे ठीक किया जाए, हर चरण पर फ़ॉर्म रीसेट किए बिना?

+0

क्या आप हमारे लिए कुछ कोड देखने के लिए आपूर्ति कर सकते हैं? – Gausie

+0

अब और आवश्यक नहीं है, समस्या .update() के साथ थी ... मैंने आंतरिक HTML की कोशिश की और यह अच्छी तरह से काम किया, बस कोशिश की कि मैं कोशिश करता हूं। फिर से और यह अचानक काम करता है ... मुझे नहीं पता कि क्या हुआ कल (जब मैंने पूरी दोपहर इस पर बिताई), कि यह इस तरह काम नहीं करना चाहता था (मैंने .value के बजाय .text का उपयोग किया हो सकता है, या PHPs iduno में कुछ त्रुटि हुई थी) वैसे भी आपको परेशान करने के लिए खेद है सब कुछ के लिए – RedFury

+0

मुझे लगता है कि आपको अपने प्रश्न का उत्तर पोस्ट करना चाहिए (केवल उपरोक्त कह रहा है) और फिर इसे जांचें, इसलिए इस प्रश्न को अनुत्तरित प्रश्न कतार से हटाया जा सकता है – machineghost

उत्तर

2

.value और।यहां तक ​​कि पाठ क्षेत्र स्क्रिप्ट के ऊपर लिख देगा संशोधित करने के बाद

document.forms[0].text_area_name.value = "STUFF"; 

: innerHTML समस्या

0

मुझे यह सही समस्या है। अब तक मैं

$('#addofferlink').click(function(){ 
    var offer = "#OFFER_"+$('#offer_id').val()+"#"; 
    $('#message').append(offer); 
}); 

मैं भी कोशिश की है की कोशिश की है,

$('#addofferlink').click(function(){ 
    var e = $('#message').html(); 
    var offer = "#OFFER_"+$('#offer_id').val()+"#"; 
    $('#message').html(e+offer); 
}); 

समस्या यह है कि प्रस्ताव लिंक जोड़ने के लिए पाठ क्षेत्र (#message) में उपयोगकर्ता द्वारा टाइप किये तो बटन पर क्लिक करता है, तो हो रहा है कुछ भी प्रदर्शित नहीं होता है। फ़ायरबग का उपयोग करते हुए स्रोत को देखते हुए, मैं देख सकता हूं कि टेक्स्टरेरा में निहित वास्तविक पाठ को संशोधित किया जा रहा है, लेकिन स्क्रीन पर प्रदर्शित नहीं किया गया है।

ऐसा लगता है कि जावास्क्रिप्ट टैग की HTML सामग्री बदल रहा है, लेकिन ब्राउज़र वर्तमान में टाइप की गई सामग्री को स्मृति (मुझे लगता है) या कहीं और संग्रहीत कर रहा है।

वैल (ई + ऑफ़र) का उपयोग करके टेक्स्टरेरा को अपडेट करने से दर्ज टेक्स्ट हटा दिया जाएगा और इसे ऑफ़रलिंक से प्रतिस्थापित कर दिया जाएगा, और आंतरिक HTML = ई + ऑफ़र का उपयोग करना बिल्कुल काम नहीं करेगा, टेक्स्टटेरा में कोई बदलाव नहीं दिखा रहा है।


मैंने इसे हल करने में कामयाब रहा है!

मेरी सोच इस तथ्य के आसपास घूमती है कि टैग में टेक्स्ट होता है, और इसका अपना बंद टैग है, मुझे इसे .html() का उपयोग करके सामग्री प्राप्त करना होगा।

फ़ील्ड की सामग्री प्राप्त करने के लिए .val() का उपयोग करके आप सामग्री को आसानी से खींच और अपडेट कर सकते हैं। मैं निम्नलिखित के साथ समाप्त हुआ,

$('#addofferlink').click(function(){ 
    var e = $('#message').val(); 
    var offer = "#OFFER_"+$('#offer_id').val()+"#"; 
    $('#message').val(e+offer); 
}); 
1

मैं बस इस अजीब समस्या तय ठीक करने के लिए लग रहा था।

innerHTML टेक्स्टरेरा को संशोधित करने के बाद मेरे लिए काम नहीं किया।

5

मुझे यह वही समस्या थी। एचटीएमएल डोम वस्तु को पार्स करने जाता है, textarea की सामग्री <textarea>

<textarea cols="10" rows="10">Content of textarea</textarea> 

मान document.getElementByTagName('textarea').innerHTML और document.getElementByTagName('textarea').value रिटर्न इसी मान की innetHTML है Content of textarea

लेकिन लोड हो रहा है डोम वस्तु के बाद, innerHTML मूल्य की सामग्री को बदल नहीं करता है बदल रहा है textarea बॉक्स। इसे बदलने का एक समाधान value फ़ील्ड को संशोधित कर रहा है।

document.getElementByTagName('textarea').value="New content of textarea"; 

या jQuery

$("textarea").val("New content of textarea"); 
0

कभी कभी तुम एक पाठ क्षेत्र में प्रदर्शित करते हैं, एक विशेष स्ट्रिंग और उपयोगकर्ता को देखने कि यह क्या है, तो संभवतः उसमें परिवर्तन कर जाने के लिए इच्छा हो सकती है में; लेकिन, आप चाहते हैं कि उन्हें यह देखने में सक्षम करें कि मूल पाठ क्या था। Textareas बहुत अनावश्यक हैं, लेकिन संपादित पाठ में मैन्युअल परिवर्तन भी इस सेटअप का उपयोग कर उलट है।

<button id="ShowNOWxItmDscptn" onClick="EditItmDesc(1)">What is it now?</button> 
<button id="OpnTAxWriteNewEdit" onClick="EditItmDesc(2)">Write/Edit</button> 
<textarea id="RUBYxDescribe" max="500" width="75" placeholder="Magic"> </textarea> 

// a global variable: 
// UVarDescriptionTxt = ("This is the first line.\r\nSecond line!"); 

function EditItmDesc(x){ 
    console.log("*x* = "+x+"."); 
    console.log("Text to reset : "+UVarDescriptionTxt+"."); 

    var InnyShow = document.getElementById("RUBYxDescribe"); 
    InnyShow.value = UVarDescriptionTxt; 

    if(x == 1) { 
     InnyShow.innerHTML = ""; 
     InnyShow.textContent = ""; 
     InnyShow.innerHTML = UVarDescriptionTxt; 
    } 

    if(x == 2){ 
     InnyShow.value = ""; 
    } 
} 

उपर्युक्त संरचना ने मेरे लिए उस समस्या को हल किया।

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