2012-08-08 24 views
51

मेरे पास मूल्य में एक लिंक के साथ एक HTML इनपुट है।jQuery .val परिवर्तन इनपुट मान नहीं बदलता

<input type = 'text' value = 'http://www.link.com' id = 'link' /> 

मैं एक निश्चित घटना पर मूल्य बदलने के लिए jQuery का उपयोग कर रहा हूं।

$('#link').val('new value'); 

ऊपर कोड टेक्स्ट बॉक्स के मान में परिवर्तन लेकिन (मूल्य = 'http://www.link.com' अपरिवर्तित रहता है) कोड में मूल्य नहीं बदलता है। मुझे वैल्यू = '' को बदलने के लिए भी चाहिए।

+0

क्या आप 'code' में मतलब है:

ठीक विशेष वर्ण से बचने के लिए किया गया था? क्या आप पृष्ठ के मूल (इस प्रकार, अनमोडिफाइड) स्रोत को देख रहे हैं? –

+0

क्रोम के निरीक्षण तत्व का उपयोग करना। – Lukas

+2

@Luke मान बदल जाएगा, लेकिन क्रोम के इंस्पेक्टर में HTML तत्व का दृश्यमान मूल्य नहीं होगा। फिर मान को अलर्ट करने या इसे कंसोल पर आउटपुट करने का प्रयास करें और आप देखेंगे कि यह बदल गया है। देखें, यह बदल गया है: http://jsfiddle.net/a8SxF/ – TheZ

उत्तर

105

इसके बजाय attr का उपयोग करें।
$('#link').attr('value', 'new value');

demo

+4

यह 'setAttribute' या jQuery के' attr' का उपयोग करके पूरी तरह से सही है, आप DOM तत्व के मान को भी प्रभावित करेंगे: http://jsfiddle.net/a8SxF/1/ – TheZ

+3

@TheZ ऐसा इसलिए है क्योंकि इनपुट का गंदा मान ध्वज गलत है। इनपुट के साथ बातचीत करने का प्रयास करें (मान उपयोगकर्ता इनपुट के बाद गंदा है) और उसके बाद सेट करें – Esailija

+0

@Esailija वाह, जो बहुत कुछ बताता है। बस जब मैंने सोचा कि वहाँ कोई और प्रकार नहीं हो सकता है तो xch – TheZ

9

मूल्य संपत्ति बदलना defaultValue नहीं बदलता है। कोड में (.html() या innerHTML के साथ पुनर्प्राप्त) मूल्य विशेषता में defaultValue, मूल्य संपत्ति नहीं होगी।

+0

यह बताता है। टाइपिंग <इनपुट id = 'a' value> को भी परिवर्तित नहीं करती है लेकिन $ ("# a") के परिणाम को प्रभावित करती है। Val()। एक प्रश्न बस सुनिश्चित करने के लिए: $ ("# ए") है।वैल (वैल्यू) वास्तव में एक सही तरीका है कि इनपुट तत्व के मूल्य को कैसे बदला जाए, ताकि सही मूल्य सबमिट किया जा सके? –

+0

हाँ, यह सही है। विशेषता को बदलना जो सबमिट किया जा रहा है उसे नहीं बदलेगा। –

0
<script src="//code.jquery.com/jquery.min.js"></script> 
<script> 
function changes() { 
$('#link').val('new value'); 
} 
</script> 
<button onclick="changes()">a</button> 
<input type='text' value='http://www.link.com' id='link'> 
+1

हाँ यह नहीं करता है ' एसी अद्यतन टी हालांकि दोहरी मूल्य। यह स्क्रीन स्क्रीन बॉक्स पर अपडेट करता है, लेकिन जब आप कोई फॉर्म सबमिट करने का प्रयास करते हैं तो वह मान होता है जब पृष्ठ मूल रूप से लोड होता था। – Grant

1

यह सिर्फ एक संभव परिदृश्य जो मुझे क्या हुआ है। खैर अगर यह किसी के बाद महान मदद करता है: मैंने एक जटिल ऐप लिखा है जो कोड के साथ कहीं भी मैंने उन्हें दिखाने से पहले सभी टेक्स्टबॉक्स मूल्यों को साफ़ करने के लिए एक फ़ंक्शन का उपयोग किया था। कुछ समय बाद मैंने jquery val ('value') का उपयोग करके टेक्स्टबॉक्स मान सेट करने का प्रयास किया लेकिन मैंने यह नहीं देखा कि उसके ठीक बाद मैंने ClearAllInputs विधि का आह्वान किया .. इसलिए, यह भी हो सकता है।

2

रिकार्डो के जवाब पर थोड़ा विस्तार करने के लिए: https://stackoverflow.com/a/11873775/7672426

http://api.jquery.com/val/#val2

वैल() के बारे में

स्थापना इस पद्धति का उपयोग मूल्यों (या देशी मूल्य संपत्ति का उपयोग कर) प्रेषण का कारण नहीं है परिवर्तन घटना का। इस कारण से, प्रासंगिक ईवेंट हैंडलर निष्पादित नहीं किए जाएंगे। यदि आप उन्हें निष्पादित करना चाहते हैं, तो आपको मान सेट करने के बाद .trigger ("change") पर कॉल करना चाहिए।

0

मेरा इसी तरह का मुद्दा चयनकर्ता में विशेष वर्ण (उदा। अवधि) होने के कारण हुआ था।

$("#dots\\.er\\.bad").val("mmmk"); 
संबंधित मुद्दे