2011-09-26 13 views
26

फिलहाल में विकल्प का चयन करें पर पुन: निर्देशित मैं इस का उपयोग कर रहा:सलेक्ट बॉक्स

<select ONCHANGE="location = this.options[this.selectedIndex].value;"> 

यह मेरे स्थान पर विकल्प मान पर अंदर अनुप्रेषित। लेकिन यह उम्मीद के अनुसार काम नहीं करता .. मतलब है कि अगर मैं चयन के पहले विकल्प पर क्लिक करता हूं, तो कार्रवाई चालू नहीं चल रहा है। मैं जावास्क्रिप्ट के बारे में सोच रहा था, लेकिन मुझे लगता है कि आपके पास कुछ बेहतर सुझाव लोग होंगे। तो अगर मैं प्रत्येक विकल्प पर क्लिक करता हूं तो यह इसे कैसे काम कर सकता है, यह मुझे इसके मूल्य पर रीडायरेक्ट करेगा?

+0

यह जावास्क्रिप्ट पहले से ही है। (इनलाइन जावास्क्रिप्ट) – Nathan

+0

आह, ठीक है इसके लिए धन्यवाद: पी – Lucas

उत्तर

80

क्योंकि पहला विकल्प पहले से ही चुना गया है, तो परिवर्तन ईवेंट कभी नहीं निकाल दिया जाता है। पहले के रूप में एक खाली मान जोड़ें और स्थान असाइनमेंट में खाली के लिए जाँच करें।

यहाँ एक उदाहरण है:

<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);"> 
    <option value="">Select...</option> 
    <option value="http://google.com">Google</option> 
    <option value="http://yahoo.com">Yahoo</option> 
</select> 

और यहाँ बेला है: http://jsfiddle.net/bL5sq/

+0

मैंने किया, लेकिन यदि उपयोगकर्ता ब्राउज़र पर बैक बटन दबाएगा, तो वह 'खाली' मान का चयन कर सकता है, और स्क्रिप्ट स्थान टूटा जाएगा। – Lucas

+0

@Lucas फिर "अक्षम करें" विशेषता को "चुनें ..." मान में जोड़ें ताकि जब आप इसे क्लिक करेंगे तो कुछ भी नहीं होगा: '' – Nathan

+2

@All - उसकी कोई ज़रूरत नहीं। उपरोक्त लिपि तोड़ नहीं है !! –

17

मैं दृढ़ता से निम्नलिखित की तरह इनलाइन JavaScript से दूर जाने, कुछ करने के लिए सुझाव चाहते हैं:

function redirect(goto){ 
    var conf = confirm("Are you sure you want to go elswhere?"); 
    if (conf && goto != '') { 
     window.location = goto; 
    } 
} 

var selectEl = document.getElementById('redirectSelect'); 

selectEl.onchange = function(){ 
    var goto = this.value; 
    redirect(goto); 

}; 

JS Fiddle demo (404 linkrot victim)
JS Fiddle demo via Wayback Machine
Forked JS Fiddle for current users

जे एस फिडल में मार्क-अप में पहला विकल्प सौंपा कोई मूल्य नहीं है तो क्लिक करने से वह कुछ भी करने को समारोह प्रारंभ नहीं करना चाहिए, और के बाद से यह select पर क्लिक डिफ़ॉल्ट मान है और फिर का चयन है कि पहली डिफ़ॉल्ट option वैसे भी change घटना ट्रिगर नहीं करेगा।

अद्यतन:
नवीनतम उदाहरण है (2017/08/09) रीडायरेक्ट URL जे एस फिडल और दोनों डोमेन के बीच मिश्रित सामग्री, साथ ही दोनों डोमेन फ़्रेम सामग्री के लिए 'sameorigin' की आवश्यकता होती है के बारे में त्रुटियों के कारण बाहर गमागमन की आवश्यकता है। - अल्बर्ट

+2

तीन साल बहुत देर हो चुकी है, लेकिन यह आईएमओ का सबसे अच्छा जवाब है। – Eckstein

+0

आपका फीडल लिंक 404 देता है, अन्यथा अच्छा जवाब; एचटीएमएल गायब है, हालांकि – Manube

+0

मानक जावास्क्रिप्ट बनाम इनलाइन बना देगा, जहां तक ​​Google क्रॉलिंग का कोई संबंध है? – splinter123

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