2008-11-06 12 views
10

मेरे पास टेक्स्टबॉक्स और बटन वाला एक फॉर्म है। आईई एकमात्र ब्राउज़र है जो एंटर दबाए जाने पर फॉर्म सबमिट नहीं करेगा (एफएफ, ओपेरा, सफारी, क्रोम इत्यादि में काम करता है)। मुझे यह जावास्क्रिप्ट फ़ंक्शन मिल गया है ताकि IE को व्यवहार में सुधारने का प्रयास किया जा सके; लेकिन कोई लाभ नहीं हुआ:एंटर बटन फॉर्म सबमिट नहीं करता है (केवल आईई) एएसपी.नेट

function checkEnter(e){ 
    var characterCode 
    if (e && e.which) { 
     e = e 
     characterCode = e.which 
    } else { 
     e = event 
     characterCode = e.keyCode 
    } 
    if (characterCode == 13) { 
     document.forms[0].submit() 
     return false 
    } else { 
     return true 
    } 
} 

कार्यान्वयन:

searchbox.Attributes("OnKeyUp") = "checkEnter(event)" 

किसी भी सलाह?

संपादित करें: CodeProject परThis page रूपरेखा Dillie जो कह रहे हैं, और यह पूरी तरह से काम करता है।

+1

तो, आपके फॉर्म में कोई बटन नहीं है? – James

+0

क्षमा करें, इसमें एक बटन भी है। यह बात बताने के लिए धन्यवाद। – Anders

उत्तर

13

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

+0

मेरे स्वरूपण के साथ एक पैनल गड़बड़ जोड़ देगा? – Anders

+0

नहीं, यह नहीं होगा (मेरे अपने प्रश्न का उत्तर दिया)। यह काम किया , धन्यवाद!: डी – Anders

+2

खुशी हुई यह काम करता है। इसके साथ अच्छी चेतावनी यह भी है कि यदि आपके पास पृष्ठ पर कई रूप हैं (खोज करने के लिए विभिन्न विकल्प कहें), तो आप उनमें से प्रत्येक के चारों ओर एक पैनल लपेट सकते हैं और फिर उचित सबमिट कर सकते हैं बटन ठीक से "मैप किया गया" है। –

2
// Use the following Javascript in your HTML view 
// put it somewhere between <head> and </head> 

    <script language="JavaScript" type="text/javascript"><!-- 
    function KeyDownHandler(btn) 
    { 
     if (event.keyCode == 13) 
     { 
     event.returnValue=false; 
     event.cancel = true; 
     btn.click(); 
     } 
    } 
    // --> 
    </script> 

    // Put this in your TextBox(es) aka inside <asp:textbox ... > 
    onkeydown="KeyDownHandler(ButtonID)" 
+0

इनपुट के लिए धन्यवाद, यह एक सुंदर 'ऑब्जेक्ट इस संपत्ति या विधि' त्रुटि का समर्थन नहीं करता है, हालांकि :( – Anders

-1

क्या यह पोस्ट के बजाय जीईटी का उपयोग करता है? क्या यूआरएल बहुत लंबा है? मैंने देखा है कि ...

-1

असल में, किसी फ़ॉर्म को एंटर पर एक फॉर्म सबमिट करने के लिए बिल्टिन व्यवहार को सक्षम करने के लिए एक बटन, इनपुट प्रकार = "सबमिट" या इनपुट प्रकार = "छवि" की आवश्यकता होती है। इसे सबमिट करने के लिए आपको जावास्क्रिप्ट की आवश्यकता नहीं है।

25

बस पृष्ठ पर एक छिपे हुए div में एक टेक्स्ट इनपुट बनाएं। यह आईई बग को बाधित करेगा।

उदाहरण div:

<!-- Fix for IE bug (One text input and submit, disables submit on pressing "Enter") --> 
    <div style="display:none"> 
      <input type="text" name="hiddenText"/> 
    </div> 
1

जब display:none का उपयोग कर, आईई बटन दिखाई नहीं है और इसलिए होगा इसका इस्तेमाल करने के प्रपत्र प्रस्तुत करने में सक्षम नहीं होगा। इसके बजाय, आप z-index का उपयोग कर सकते हैं और इसे किसी अन्य तत्व के तहत छिपाने के लिए पूर्ण स्थिति, उदाहरण के लिए शैली के साथ:

position:absolute; bottom: -20px; left: -20px; z-index: -1;

अब यह अभी भी वहाँ हो जाएगा, आईई द्वारा प्रयोग करने योग्य है, लेकिन एक और तत्व के नीचे छिपा हुआ है।

0

यह एकल पाठ क्षेत्र आदानों के लिए IE में एक विशेष लक्षण के कारण है।

एक आसान समाधान पृष्ठ को एक और छिपाने वाला एक पृष्ठ जोड़कर रोकने के लिए है।

<input type="text" name="hidden" style="visibility:hidden;display:none;" /> 

देख .. http://www.4guysfromrolla.com/articles/060805-1.aspx

1

बटन छुपाएं - का उपयोग नहीं कर प्रदर्शन: कोई नहीं, लेकिन निम्नलिखित शैलियों के साथ:

position: absolute; /* no longer takes up layout space */ 
visibility: hidden; /* no longer clickable/visible */ 

आप ऐसा करते हैं, तो आप की जरूरत नहीं होगी कोई अन्य तत्व या छुपा इनपुट जोड़ें।