2009-08-20 17 views
7

मेरे पास एक कोड है (इसे नीचे देखें)। यह फ़ायरफ़ॉक्स में पूरी तरह से काम करता है: यह __JL_SAVE बटन पर क्लिक करने के बाद सबमिट की गई जानकारी सहेजता है और इस समस्या को हल? धन्यवाद के लिए एक ही पृष्ठ पर उपयोगकर्ता रहता है। लेकिन इंटरनेट एक्सप्लोरर & ओपेरा में यह केवल सूचकांक पृष्ठ (index.php) पर रीडायरेक्ट और सबमिट की गई जानकारी को बचाने नहीं करता है। मैं क्या कर सकते हैं।(जावास्क्रिप्ट) onClick = "form.submit(); आईई और ओपेरा पर काम नहीं करता

यहाँ है मेरा कोड:

<form action="index.php" id="mosForm" method="post" enctype="multipart/form-data"> 

    <fieldset> 
     <legend><?=__JL_ABOUT_MYSELF?></legend> 
     <span class="a" onclick="showHideLegend('about_myself_1')"><?=__JL_EDIT_BLOCK;?></span> 
     <div id="about_myself_descr" style="display: block"><?=__JL_SELF_DESCR;?></div> 
     <div id="about_myself_1" style="display: none"><?php include "html/about_myself_fill.php"?></div> 
     <div id="about_myself_2""><?php include "html/about_myself_show.php"?></div> 
    </fieldset> 

    <fieldset> 
     <legend><?=__JL_ABOUT_MYSELF?></legend> 
     <span class="a" onclick="showHideLegend('type_1')"><?=__JL_EDIT_BLOCK;?></span> 
     <?php if ($typ_block) {?> 
      <?php /* <input type="checkbox" id="jl_type_block" name="jl_type_block" <?php if ($roon_type_block) echo 'checked ';?> /> */ ?> 
      <input type="checkbox" id="jl_type_block" name="jl_type_block" disabled <?php echo 'checked ';?> /> 
      <label for="jl_type_block"><?=__JL_ON_BLOCK?></label> 
     <?php } else { 
      echo __JL_OFF_BLOCK; 
     }?> 

     <div id="about_myself_descr" style="display: block"><?=__JL_SELF_DESCR;?></div> 

     <div id="type_1" style="display : none"> 
      <?php include "html/type.php"?> 
     </div> 
     <?php if ($typ_block) { ?> 
      <div id="type_2"> 
       <?php include "html/type_show.php"?> 
      </div> 
     <?php } ?> 
     </fieldset> 

     <fieldset> 
      <legend><?=__JL_INTEREST?></legend> 
      <span class="a" onclick="showHideLegend('interest_1')"><?=__JL_EDIT_BLOCK;?></span> 
      <?php if ($interest_block) {?> 
       <input type="checkbox" id="jl_interest_block" name="jl_interest_block" disabled <?php echo 'checked ';?> /> 
       <label for="jl_interest_block"><?=__JL_ON_BLOCK?></label> 
      <?php } else 
       echo __JL_OFF_BLOCK; 
      ?> 
      <div id="interest_descr" style="display:block"><?=__JL_INTEREST_DESCR;?></div> 
      <div id="interest_1" style="display:none"> 
       <?php include "html/interest.php"?> 
      </div> 
      <?php if ($interest_block) { ?> 
       <div id="interest_2"> 
       <?php include "html/interest_show.php"?> 
       </div> 
      <?php } ?> 
     </fieldset> 


      <input type="submit" name="save" value="__JL_SAVE" onClick="mosForm.submit();" /> 
      <input type="hidden" name="option" value="com_joomlove" /> 
      <input type="hidden" id="task" name="task" value="save_info" /> 
      </form> 

पूर्ण स्रोत उपलब्ध एच पहले: http://narkoz.pastebin.com/f4f036f5

उत्तर

8
  1. आप रूप है, यही कारण है कि प्रपत्र प्रस्तुत करने के लिए JavaScript का उपयोग के व्यवहार बदल रहे हैं तो ?, आप एक सबमिट बटन में पहले से ही कर रहे हैं।

  2. आपको फॉर्म नाम = "mosForm" देने की कोशिश करनी चाहिए, न केवल id = "mosForm", ताकि उस ईवेंट हैंडलर से DOM संदर्भ मिल सके।

+1

सहमत और सहमत हुए। – Funka

+1

आप "this.form.submit()" के साथ बटन से फ़ॉर्म का भी संदर्भ दे सकते हैं ... – Funka

10

आप वास्तव में फार्म का "सबमिट करें" ईवेंट हैंडलर में किसी भी प्रस्तुत करने से संबंधित तर्क प्रदर्शन करना चाहिए फार्म के तत्वों में से एक के "क्लिक" में नहीं है। उदा .:

<form ... onsubmit="return validateForm(this);"> ... </form> 

यह सुनिश्चित करना चाहिए कि कुंजीपटल आधारित प्रस्तुत अपने हैंडलर के माध्यम से चला जाता है, यह आपको किसी ईवेंट हैंडलर से गलत मूल्य लौटाकर फॉर्म सबमिशन को रोकने की क्षमता भी देता है। दूसरी तरफ, कोई सच्चाई मूल्य स्वचालित रूप से एक फॉर्म जमा करेगा।

+1

यह विधि उन सबमिशन को भी अनुमति देती है जहां जावास्क्रिप्ट अक्षम है या उपलब्ध नहीं है। –

+0

मेरे लिए काम करता है, जब मैं विधि शरीर में 'onsubmit =" validateForm (this) "' और 'return true 'का उपयोग करता हूं। – Simon

1

जब आपके पास:

<form method="post" action="somefile.php" name="form" id="form"> 
<button type="button" name="submit" onclick="$('#form').submit()">go</button> 
</form> 

IE8, ओपेरा, क्रोम में काम करता है, लेकिन फ़ायरफ़ॉक्स (14) में नहीं: name="submit":

Firefox के साथ एक समस्या है। जब आप name विशेषता को name="submit_ff" (या कुछ और) में बदलते हैं, तो यह फ़ायरफ़ॉक्स में भी काम करता है।

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