2008-08-08 19 views
10

निम्नलिखित कोड IE में अच्छा काम करता है, लेकिन FF या सफारी में नहीं। मैं अपने जीवन के लिए काम नहीं कर सकता क्यों। कोड चाहिए रेडियो बटन को निष्क्रिय करने के लिए यदि आप "अक्षम 2 रेडियो बटन" विकल्प का चयन है। यदि आप "रेडियो बटन सक्षम करें" विकल्प चुनते हैं तो इसे रेडियो बटन सक्षम करना चाहिए। ये दोनों काम ...मैं अक्षम रेडियो बटन कैसे सक्षम कर सकता हूं?

हालांकि, अगर आप 2 विकल्पों के बीच ले जाने के लिए ("सक्षम करें ..." और "अक्षम ...") अपने माउस का प्रयोग नहीं करते तो रेडियो बटन होना प्रतीत नहीं होते हैं अक्षम या सही ढंग से सक्षम, जब तक आप पृष्ठ पर कहीं और क्लिक नहीं करते (रेडियो बटन पर नहीं)।

किसी को भी समय है/उत्सुक/सहायक महसूस कर रही है, तो एक HTML पृष्ठ में नीचे दिए गए कोड पेस्ट और एक ब्राउज़र में यह लोड करें। यह IE में अच्छा काम करता है, लेकिन समस्या यह Windows XP पर एफएफ (मेरे मामले में 3) और सफारी में प्रकट होता है, सब।

<html> 
    <head> 
    <script language="javascript"> 
     function SetLocationOptions() { 
     var frmTemp = document.frm; 
     var selTemp = frmTemp.user; 

     if(selTemp.selectedIndex >= 0) { 
      var myOpt = selTemp.options[selTemp.selectedIndex]; 
      if(myOpt.attributes[0].nodeValue == '1') { 
      frmTemp.transfer_to[0].disabled = true; 
      frmTemp.transfer_to[1].disabled = true; 
      frmTemp.transfer_to[2].checked = true; 
      } else { 
      frmTemp.transfer_to[0].disabled = false; 
      frmTemp.transfer_to[1].disabled = false; 
      } 
     } 
     } 
    </script> 
    </head> 

    <body> 
    <form name="frm" action="coopfunds_transfer_request.asp" method="post"> 
     <select name="user" onchange="javascript: SetLocationOptions()"> 
     <option value="" />Choose One 
     <option value="58" user_is_tsm="0" />Enable both radio buttons 
     <option value="157" user_is_tsm="1" />Disable 2 radio buttons 
     </select> 

     <br /><br /> 

     <input type="radio" name="transfer_to" value="fund_amount1" />Premium&nbsp;&nbsp;&nbsp; 
     <input type="radio" name="transfer_to" value="fund_amount2" />Other&nbsp;&nbsp;&nbsp; 
     <input type="radio" name="transfer_to" value="both" CHECKED />Both 

     <br /><br /> 

     <input type="button" class="buttonStyle" value="Submit Request" /> 
    </form> 
    </body> 
</html> 
+0

उम्म, इस IE10 और एफएफ में काम कर रहा है: [बेला] (http: //jsfiddle.net/K6cAu/1/) – akinuri

उत्तर

3

कीबोर्ड का उपयोग करते समय आईई के व्यवहार की नकल करने के लिए एफएफ प्राप्त करने के लिए, आप चयन बॉक्स पर कीप ईवेंट का उपयोग कर सकते हैं। अपने उदाहरण में (मैं ईवेंट हैंडलर्स इस तरह से संलग्न के एक प्रशंसक नहीं हूँ, लेकिन है कि एक और विषय है), इसे इस तरह होगा:

<select name="user" id="selUser" onchange="javascript:SetLocationOptions()" onkeyup="javascript:SetLocationOptions()"> 
3

ठीक है, आईई में कुछ हद तक गैर मानक ऑब्जेक्ट मॉडल है; आप जो कर रहे हैं वह काम नहीं करना चाहिए लेकिन आप इससे दूर हो रहे हैं क्योंकि आईई आपके लिए अच्छा है। फ़ायरफ़ॉक्स और सफारी में, आपके कोड में document.frm अपरिभाषित मूल्यांकन करता है।

आपको अपने फॉर्म तत्वों पर आईडी मानों का उपयोग करने की आवश्यकता है और दस्तावेज़ ऑब्जेक्ट के अस्तित्वहीन गुणों का जिक्र करने के बजाय उन्हें संदर्भ देने के लिए document.getElementById('whatever') का उपयोग करने की आवश्यकता है।

तो यह थोड़ा बेहतर काम करता है और आप क्या कर रहे हैं कर सकते हैं के बाद:

Line 27: <form name="frm" id="f" ... 

Line 6: var frmTemp = document.getElementById('f'); 

लेकिन आप इस उत्कृष्ट पुस्तक की जाँच करने के लिए चाहते हो सकता है अगर आप चीजों के बारे में जाने के सही तरीके के बारे में और जानना चाहते : DOM Scripting द्वारा जेरेमी कीथ

इसके अलावा जब तक हम इस विषय पर कर रहे हैं, Bulletproof Ajax एक ही लेखक द्वारा भी अपने शेल्फ़ पर एक जगह के योग्य है JavaScript: The Good Parts

1

क्यों नहीं जी डौग Crockford द्वारा के रूप में है रब AJAX पटकथा पुस्तकालयों में से एक हैं, वे दूर सार पार ब्राउज़र डोम पटकथा काला जादू का एक बहुत है और जीवन एक बहुत की एक नरक आसान बनाते हैं।

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