2012-07-03 9 views
5

में मिलता है मैं HTML पृष्ठ में डेटा पढ़ने के लिए jQuery का उपयोग कर रहा हूं। उस पृष्ठ पर, मेरे पास <form> तत्व है जिसमें उपयोगकर्ता के मूल्यों को दर्ज करने के लिए कुछ <input> टैग हैं।
प्रारंभ होने पर, इस फ़ॉर्म में <input> तत्वों के लिए कुछ डिफ़ॉल्ट मान हैं। जब मैं इस फॉर्म को सबमिट करता हूं, तो मैं इस पृष्ठ की वर्तमान स्थिति की HTML स्ट्रिंग प्राप्त करने के लिए html() विधि का उपयोग करता हूं, लेकिन मुझे नहीं लगता कि इस परिणाम स्ट्रिंग में अभी भी पुराने मान (डिफ़ॉल्ट इनपुट मान) हैं, न कि नए।
html() पर कॉल करने से पहले उन <input> तत्वों को उपयोगकर्ता द्वारा दर्ज किए गए मान को अपडेट या जारी रखने का कोई तरीका है? मैं jQuery स्ट्रिंग का उपयोग कर स्ट्रिंग कैसे प्राप्त कर सकता हूं जिसमें नवीनतम मान होता है?
आपको बहुत बहुत धन्यवाद!jQuery: html() फ़ंक्शन को पुराने डेटा

+2

जहाँ आपके कोड है ..! –

+0

इस पृष्ठ की वर्तमान स्थिति की HTML स्ट्रिंग प्राप्त करने के लिए आपको * क्यों चाहिए *? – VisioN

+0

पूरे पृष्ठ को पाने के लिए आप HTML का उपयोग क्यों कर रहे हैं, अजीब लगता है। यदि आप यही कर रहे हैं तो आपको धारावाहिक का उपयोग करके फॉर्म से सभी मूल्यों का चयन करने में सक्षम होना चाहिए। –

उत्तर

5

हालांकि, यह अजीब बात है कि आप क्या करने का प्रयास कर रहे हैं, लेकिन आपको केवल तत्व तत्वों की मान विशेषता को अपडेट करना है।

$("form input").attr("value", function() { 
    return this.value; 
}); 

डेमो:http://jsfiddle.net/BXha6/

+0

प्रस्तुत करने के लिए उपयोग करता हूं, आपको बहुत धन्यवाद। दरअसल, आपके सुझाव ने मुझे इस समस्या को हल करने में मदद नहीं की, लेकिन इसने मुझे जाने के लिए एक सुराग दिया। मैंने jsfiddle पर बनाए गए डेमो की कोशिश की, यह jQuery 1.7.1 के साथ काम किया, लेकिन जब मैंने इसे 1.5.2 तक डाउनग्रेड किया, तो यह त्रुटि^_^का कारण बन गया। तो मुझे लगता है कि शायद jQuery 1.5.2 में कुछ रहस्यमय है कि मैं इसे गहराई से शोध करूंगा। मैंने आपके सुराग को दूसरे तरीके से लागू किया: '$ (" फॉर्म इनपुट ")।attr ("defaultValue", फ़ंक्शन() { इसे वापस करें .value; }); ' और यह बहुत अच्छा काम करता है! –

2

डिफ़ॉल्ट रूप से jQuery html() समारोह defaultValue और defaultChecked गुणों का उपयोग करके बनाए रखने के बजाय होगा यह निम्नलिखित कोड (फार्म submit हैंडलर में डाल दिया) के साथ किया जा सकता है वर्तमान मूल्य/चयन (जैसे जावास्क्रिप्ट innerHTML करता है)। Read the Documentation on prop(): इस के आसपास पाने के लिए आपको सबसे पहले jQuery prop() उपयोग करने के लिए की जरूरत है।

उदाहरण के लिए

, कोड दिया:

<form action='/'> 
    <input type='radio' value='1' checked name='first' /> 
    <input type='radio' value='2' name='first' /> 

    <input type='checkbox' value='yes' /> 

    <input type='text' value='Start Text' name='second' /> 
</form> 

तो

$('form').html() 

हमेशा उत्पादन कि सटीक कोड, कौन-से मान आपके द्वारा चयनित जोड़ दिया है/की परवाह किए बिना/संशोधित करेंगे।

में सुधार करने के लिए है कि, बस गुणों के तत्व के मूल्यों कन्वर्ट करने के लिए एक समारोह चलाएँ:

$("form input[type='radio']").each(function(){ 
    if (this.checked){ 
     $(this).prop("defaultChecked",true); 
    } else { 
     $(this).prop("defaultChecked",false); 
    } 
}); 
$("form input[type='checkbox']").each(function(){ 
    if (this.checked){ 
     $(this).prop("defaultChecked",true); 
    } else { 
     $(this).prop("defaultChecked",false); 
    } 
}); 
$("form input[type='text']").each(function(){ 
    $(this).prop("defaultValue",$(this).val()); 
}); 

alert($(form).html()); //or var the_code = $(form).html(); 

अब आप एचटीएमएल अपने वर्तमान पृष्ठ राज्य के रूप में यह प्रदर्शित कर रहा है होगा।

0

पाठ क्षेत्र बिट थोड़ी अलग है अगर आप कैसे उस तत्व प्रकार करने के लिए देख रहे थे:

$("textarea").html(function() { 
    return this.value; 
}); 

http://jsfiddle.net/BXha6/7/

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