2012-01-19 14 views
22

मैंने देखा है यह jQuery बराबर है:जावास्क्रिप्ट का उपयोग करके मूल्य द्वारा इनपुट तत्व का चयन कैसे करें?

$('input[value="something"]'); 

लेकिन आप इसे कैसे शुद्ध जावास्क्रिप्ट (कोई jQuery) का उपयोग कर चयन है।

अब तक सभी प्रतिक्रियाओं के लिए धन्यवाद लेकिन मुझे यकीन है कि यह सही तरीके से काम कर रहा है, मुझे इनपुट के मूल्य को किसी और चीज़ में बदलने की जरूरत है। हालांकि मैं

<enter snippet to select element here>.value = "someOtherValue"; 

द्वारा ऐसा कर सकता था लेकिन ऐसा लगता है कि यह इतना आसान नहीं है। कोई विचार।

+4

उपयोग getElementsByTagName (डोम में परिभाषित) सभी इनपुट टैग की एक सूची मिलता है, और फिर उन्हें जावास्क्रिप्ट कोड में उसे फ़िल्टर (उनके मूल्य विशेषता को देखकर) करने के लिए। यह कुछ बार करने के बाद, पुनर्विचार करें कि आप jQuery से क्यों बचना चाहते हैं। – Thilo

उत्तर

31

वापस आ जाएगी आधुनिक ब्राउज़र यानी 9 + (वास्तव में IE9 के लिए निश्चित नहीं है):

document.querySelectorAll("input[value=something]"); 
+0

को ठीक करेगा, मुझे यकीन नहीं है कि यह काम कर रहा है, मुझे कुछ मूल्यों के साथ सभी इनपुट का मूल्य बदलने की ज़रूरत है, मान लें कि मुझे "कुछ वैल्यू" से मूल्य बदलने की जरूरत है "करने के लिए" SomeOtherValue "। यह getInputsByValue ("someValue") का उपयोग करके मुझे ऐसा करने की अनुमति नहीं दे रहा है। Value = "SomeOtherValue"; – Pieter888

+0

@ Pieter888 यह "काम नहीं कर रहा है" क्योंकि उत्तर आपके मूल प्रश्न पर लिखा गया था, न कि आपका नया। आप केवल परिणामस्वरूप सरणी के माध्यम से लूप करते हैं और प्रत्येक तत्व को कुछ मान देते हैं। आप जानते हैं कि सरणी के माध्यम से लूप कैसे करें, है ना? – Esailija

+0

मुझे मिल गया, त्वरित प्रतिक्रिया के लिए धन्यवाद! – Pieter888

1

कुछ इस तरह काम करता है:

function getCheckboxByValue(v) { 
     var inputs = document.getElementsByTagName('input'); 
     for (var i = 0; i < inputs.length; i++) { 
       if(inputs[i].type == "checkbox" && inputs[i].value == v) { 
         return inputs[i]; 
       } 
     } 
     return false; 
} 
(function testCheckbox() { 
     getCheckboxByValue("1").checked = true; 
})(); 

का उपयोग jQuery हालांकि बहुत बेहतर होगा।

+0

हालांकि पहले व्यक्ति को लौटाता है, हालांकि। – Thilo

0

कुछ इस तरह काम करना चाहिए ...

for(i in document.getElementsByTagName('input')) { 
    if(i.value == 'desiredValue') { 
     return i; 
    } 
} 

संपादित करें: यह सभी की एक सरणी IE6-IE7-IE8

function getInputsByValue(value) 
{ 
    var allInputs = document.getElementsByTagName("input"); 
    var results = []; 
    for(var x=0;x<allInputs.length;x++) 
     if(allInputs[x].value == value) 
      results.push(allInputs[x]); 
    return results; 
} 

साथ साथ मेल खाता है

var matches = []; 
for(i in document.getElementsByTagName('input')) { 
    if(i.value == 'desiredValue') { 
     matches.push(i); 
    } 
} 
+0

केवल पहला मैच – Thilo

+0

सत्य देता है, एक त्वरित संशोधन – JamesHalsall

8

आप आधुनिक ब्राउज़रों पर document.querySelectorAll() का उपयोग कर सकते हैं (https://developer.mozilla.org/En/DOM/Document.querySelectorAll), उदा।

var byValue = document.querySelectorAll('input[value="something"]'); 

पुराने ब्राउज़र के लिए आप अधिक input रों पुनरावृति और मान की जाँच करने, उदा होगा

var inputs = document.getElementsByTagName("input"), 
    i, 
    len, 
    byVal = [], 
    value = "something"; 

for (i = 0, len = inputs.length; i < len; i++) { 
    if (inputs[i].value === value) { 
     byVal.push(inputs[i]); 
    } 
} 
+1

+1 एक आधुनिक दृष्टिकोण का उपयोग करने के लिए – JamesHalsall

+0

=== शायद गलत है, क्योंकि .value हमेशा एक स्ट्रिंग है –

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