8

मेरे पास एक ऐसा फॉर्म है जो टैग के "ऑनसमेट" में ट्रिगर किए गए जावास्क्रिप्ट कोड द्वारा सबमिट किया जाएगा। सभी ब्राउज़रों पर ठीक काम करता है - लेकिन आईई 7/आईई 8 पर नहीं।onsubmit = "वापसी झूठी" का इंटरनेट एक्सप्लोरर 7/8 पर कोई प्रभाव नहीं पड़ता है (फॉर्म अभी भी सबमिट किया गया है)

मैं क्या कर सकता हूं?

<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false"> 
    [...] 
    <input type="submit" value="Go"> 
</form> 
+0

'वापसी झूठी' के लिए कोई आसान कारण नहीं है, जैसा कि इसे करना चाहिए। क्या हो रहा है, इस पर एक बेहतर नज़र डालने के लिए हमें आपका कोड देखना होगा। ** संपादित करें ** हमें 'submitmyform()' के लिए कोड देखने की आवश्यकता है, क्योंकि यह संभवतः एक त्रुटि हो रही है जो 'वापसी झूठी' को निष्पादित करने से रोकती है। –

+0

@ एंडी ई: मैंने नमूना कोड –

उत्तर

0

हमारे लिए समाधान फार्म के लिए सबमिट बटन की "onclick" की "ऑनसबमिट" से जावास्क्रिप्ट घटना स्थानांतरित करने के लिए किया गया था।

<form action="/dosomething.htm" method="GET"> 
    [...] 
    <input type="submit" value="Go" onclick="submitmyform();return false"> 
</form> 
+4

जोड़ा है यह केवल उस सबमिट बटन पर एंटर कुंजी पर क्लिक करके या दबाकर फॉर्म सबमिशन को रोक देगा। फॉर्म के अंदर इनपुट नियंत्रण में एंटर कुंजी दबाकर इसके आसपास काम होगा। –

+1

मैंने यह भी सोचा कि यह मामला होगा। लेकिन ... यह वह नहीं है जो मैं यहां देखता हूं। –

+0

@AndyE यह वास्तव में प्रवेश करते समय भी रोकता है ... इसे जांचें –

-2

मुझे लगता है कि समस्या वापसी झूठी आप इसे अपने 'ऑनसबमिट' समारोह से वापस जाने के लिए

उदाहरण देखने की जरूरत है।

यह फॉर्म आईई 7/8 में कभी भी सबमिट नहीं किया जाएगा।

<form action="acknowledgement.html" method="get" onsubmit="verify();"> 
     <input type="submit" name="submit" 
     VALUE="Submit"> 
     </form> 

<script language="javscript"> 
function verify(){ 

return false; 
} 
</script> 

डैनी।

+2

यह काम नहीं करेगा। 'सत्यापन() 'फ़ंक्शन' ऑनसमेट 'फ़ंक्शन पर नियंत्रण देता है, इसलिए यह' ऑनसममिट 'फ़ंक्शन है जिसे डिफ़ॉल्ट कार्रवाई को रद्द करने के लिए झूठी वापसी की आवश्यकता होती है। –

-2

यह काम करता है - W3Scools उदाहरण (से लिया) http://www.w3schools.com/js/js_form_validation.asp

<html> 
<head> 
<script type="text/javascript"> 
function validate_required(field,alerttxt) 
{ 
with (field) 
    { 
    if (value==null||value=="") 
    { 
    alert(alerttxt);return false; 
    } 
    else 
    { 
    return true; 
    } 
    } 
} 

function validate_form(thisform) 
{ 
with (thisform) 
    { 
    if (validate_required(email,"Email must be filled out!")==false) 
    {email.focus();return false;} 
    } 
} 
</script> 
</head> 

<body> 
<form action="submit.htm" onsubmit="return validate_form(this)" method="post"> 
Email: <input type="text" name="email" size="30"> 
<input type="submit" value="Submit"> 
</form> 
</body> 

</html> 
11

मैं इस nitpick करने जा रहा हूँ की जाँच करें। यदि आप फॉर्म सबमिशन को संभालना चाहते हैं, तो यही सबमिट है। यदि उपयोगकर्ता आपके किसी एक फ़ील्ड में प्रवेश करता है, तो आपका ऑनक्लिक हैंडलर पूरी तरह से टाला जाएगा। गैर-घुसपैठ करने वाले तरीके में ऐसा करने का मूल उदाहरण यहां दिया गया है।

<form name="myform"> 
    <input type="submit" /> 
</form> 
<script> 
    document.myform.onsubmit = function(){ 
    alert('handled'); 
    return false; 
    } 
</script> 

यह jQuery, एक ही फार्म के साथ बहुत आसान बनाया जा सकता है ...

$("form[name=myform]").bind('submit',function(){ 
    alert('handled'); 
    return false; 
}); 
+2

यह गैर-घुसपैठ नहीं है, अगर आपके पास एक तंत्र था जहां आप किसी भी कार्यान्वयन विवरण को जानने के बिना स्वचालित रूप से किसी फ़ंक्शन में किसी ईवेंट को बाध्य कर सकते हैं, तो आप हैं। अर्थात। 'document.myform' या' form [name = myform] 'होने के साथ ही * विपरीत दिशा में छोड़कर, HTML में ऑनसबमिट विशेषता होने के रूप में * घुसपैठ कर रहा है। आपको जो चाहिए वह फॉर्मों की खोज करने का एक तरीका है, इसके लिए सत्यापन कार्यों की खोज करना (शायद सम्मेलन 'वैधता MyForm() 'नामकरण करके), और इसलिए स्वचालित रूप से बाध्यकारी और सामान्य रूप से बाध्यकारी है। यदि आप वास्तव में गैर-घुसपैठ करना चाहते हैं। यह भी पुन: प्रयोज्य होगा। –

+0

यदि आपके पास पृष्ठ पर 2 रूप हैं और प्रत्येक को तर्क सबमिट करने पर अलग-अलग आवश्यक है, तो आपको यह निर्धारित करने का कोई तरीका होगा कि कौन सा फॉर्म कौन सा कार्य करता है। मुझे लगता है कि यह आवश्यक रूप से नाम विशेषता के माध्यम से इस उत्तर में किया गया है। आप डेटा- * विशेषता का भी उपयोग कर सकते हैं। मुझे लगता है कि इस तरह के मामलों के लिए, 'अविभाज्य जावास्क्रिप्ट' का अर्थ है मार्कअप में जेएस इनलाइन का उपयोग न करने के बजाय कड़ाई से decuppled मार्कअप और जावास्क्रिप्ट। – jinglesthula

2
<script type="text/javascript"> 
<!-- 

function submitHandler() 
{ 
    alert(0); 
    return false; 
} 

window.onload=function(){document.getElementById("formid").attachEvent("onsubmit", submitHandler);} 
--> 
</script> 

<form action="/dosomething.htm" method="GET" id="formid"> 
    [...] 
    <input type="submit" value="Go"> 
</form> 

देते घटना विधि केवल IE7/8 के लिए ही काम करता है। यदि आप एक विश्वसनीय क्रॉस ब्राउज़र समाधान चाहते हैं तो आपको एक विकल्प के रूप में addEventListener का उपयोग करना चाहिए।

आशा है कि यह

-2

में मदद करता है आप IE अनुरूप मानकों होना चाहते हैं, तो आप यह बताने के लिए जो मानक यह एक घोषणा में अनुपालन करने के लिए चाहिए था होगा।

बिना किसी के लिए यह आप जो चाहते हैं उसे करने के लिए अंतहीन निराशा होने जा रहा है। एक के साथ, अधिकांश निराशा दूर हो जाती है क्योंकि यह हर दूसरे ब्राउज़र के रूप में काम करना शुरू कर देती है।

+0

वह कौन सा है? – BritishDeveloper

3

मुझे नहीं लगता कि आपकी वापसी झूठी कभी भी पहुंच गई है, क्योंकि यह आपके कार्य से वापस आने के बाद आता है।

<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false"> 

सुनिश्चित करें कि आप '() submitmyform' समारोह और आपके के झूठे अंदर लौटने के लिए, अगर यह तो नहीं है कि यह आप के लिए सही obsubmit घटना लौटने जा सकता है विधि बना दें।

-1

वास्तव में, क्योंकि आप submitmyform();return false लिखते हैं केवल submitmyform का मूल्यांकन किया जाता है।

दो आदेशों के मामले में, आप उन्हें इस

{submitmyform();return false;} 

ताकि दोनों मूल्यांकन किया जाता है की तरह ब्रेसिज़ के बीच डाल करने के लिए होगा।

+0

किसी ने इसे वोट दिया !? –

0

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

var myconsole = {log : function(param){}} 
window.console = window.console || myconsole; 

आप मुसीबत में हो सकता है, अगर आप माइक्रोसॉफ्ट JavaScript कंसोल करना चाहते हैं: बस एक डमी कंसोल (वहाँ पहले से ही नहीं है अगर एक) निम्न कोड के साथ खिड़की में जोड़ें। फिर बस लाइनों पर टिप्पणी करें। लेकिन अब, कंसोल ऑब्जेक्ट अब पूरी साइट पर अपरिभाषित नहीं है।

0
<form action="/dosomething.htm" method="GET" onsubmit="return submitmyform(this)"> 
    [...] 
    <input type="submit" value="Go"> 
    </form> 

इस ठीक काम करता है ... समारोह लौटना चाहिए सही या गलत

1

विरासत IE में एक घटना को रद्द करने के लिए आपको false को returnValue सेट करना होगा। बस false लौटने पर यह नहीं होगा। मुझे नहीं पता कि माइक्रोसॉफ्ट ने इसे इस तरह क्यों लागू किया।

function validateForm(evt) { 
// if form is not valid 
    if(!condition) { 
    // if evt has preventDefault 
     if(evt.preventDefault) 
      { event.preventDefault(); } 
    // if evt has returnValue 
     else if(evt.returnValue) 
      { evt.returnValue = false; } 
    // fallback 
     else 
      { return false; } 
    } 
} 

// assume form is reference to your form 
form.attachEvent('onsubmit',validateForm); 
2

इसे आजमाएं। मेरे लिए काम करते हैं।

ऑनसबमिट =:

6

कई विचारों यहाँ प्रस्तावित काम (क्योंकि वे सही कोड लिखने के लिए अलग अलग तरीकों का उपयोग करें) "जावास्क्रिप्ट अवास्तविक लौटाते" है, लेकिन वहाँ एक बहुत आसान जवाब

है

ओपी ने लिखा है:

onsubmit="submitmyform();" 

के बजाय:

onsubmit="return submitmyform();" 

यही है।