2010-11-19 16 views
82

मैं एक एएसपीनेट वेब एप्लिकेशन पर काम कर रहा हूं।सबमिट बटन ऑनक्लिक ईवेंट में फॉर्म सबमिशन कैसे रद्द कर सकता हूं?

मेरे पास सबमिट बटन के साथ एक फॉर्म है। सबमिट बटन के लिए कोड <input type='submit' value='submit request' onclick='btnClick();'> जैसा दिखता है।

function btnClick() { 
    if (!validData()) 
     cancelFormSubmission(); 
} 

मैं यह करने के लिए कैसे करते हैं:

मैं निम्नलिखित की तरह कुछ लिखने के लिए करना चाहते हैं?

+0

आउच, यह मेरा सिर चोट पहुंचा रहा है। मेरे पास कई अलग-अलग 'सबमिट' इनपुट हैं। मुझे लगता है कि मैं इस पेज पर सर्वर-साइड कंट्रोल का उपयोग करने की कोशिश करूंगा। –

+1

संभावित डुप्लिकेट [फॉर्म को सबमिट करने से कैसे रोकें?] (Http://stackoverflow.com/questions/3350247/how-to-prevent-form-from-being-submitted) –

उत्तर

146

आप कर से बेहतर रहे हैं ...

<form onsubmit="return isValidForm()" /> 

isValidForm() तो रिटर्न false, तो अपने प्रपत्र प्रस्तुत नहीं करता है।

आपको शायद अपने ईवेंट हैंडलर को इनलाइन से भी ले जाना चाहिए।

document.getElementById('my-form').onsubmit = function() { 
    return isValidForm(); 
}; 
+0

के अंत में अच्छा लगता है, लेकिन ऐसा लगता है कि जब भी मैं ASP.net का उपयोग कर रहा हूं, मुझे काम करने के लिए 'ऑनसममिट' नहीं मिल सकता है क्योंकि एएसपीनेट अपने स्वयं के रूप में सबकुछ लपेटता है ... –

+5

आप इसका उपयोग कर सकते हैं उसका दूसरा सुझाव। इनलाइन जावास्क्रिप्ट शैतान वैसे भी है। – Stephen

+3

यदि आप एएसपी का उपयोग कर रहे हैं।नेट वेब फॉर्म (संकेत: नहीं) तो अन्य रूपों को शामिल करने का प्रयास न करें। वे बस असंगत हैं। मैंने सुना है कि एएसपी.नेट एमवीसी आपको बेवकूफ मार्कअप का उपयोग करके वेब ऐप्स बनाने देता है। – Quentin

0

उपयोग onclick='return btnClick();'

और

function btnClick() { 
    return validData(); 
} 
+2

प्रवेश मारने से चेक बाईपास हो जाएगा। सबमिट करें – Cfreak

0
function btnClick() { 
    return validData(); 
} 
+1

पर इसे काम करने के लिए इससे अधिक करना आवश्यक है। मैंने functino को सच या गलत लौटने की कोशिश की है और ऐसा कोई फर्क नहीं पड़ता है। –

+1

उसका उत्तर सही है। Upvoted। आपको इसे इनपुट टैग में भी – Cfreak

+1

में वापस करना होगा, इसके अलावा, मैं डिफ़ॉल्ट व्यवहार को रद्द करने के लिए 'ev.preventDefault()' या 'ev.returnValue = false' का उपयोग करना चाहता हूं लेकिन ईवेंट बुलबुले को रोक नहीं सकता, अन्य नियंत्रणों के मामले में एक ही तत्व पर एक ही घटना। केवल 'वापसी झूठी' का उपयोग करें जब आप ईवेंट को बुलबुले से रोकना चाहते हैं ** और ** डिफ़ॉल्ट कार्रवाई रद्द करें। देखें [यह आलेख] (http://javascript.about.com/library/bldom21.htm)। –

11

आप

onclick='btnClick();' 

को
onclick='return btnClick();' 
बदलने की जरूरत है 210

और

cancelFormSubmission(); 

return false; 

कहा कि, मैं एक अच्छा घटना है कि आंतरिक घटना एक पुस्तकालय (जैसे YUI या jQuery के रूप में) के साथ unobtrusive JS के पक्ष में विशेषताओं से बचने की कोशिश करता हूँ करने के लिए एपीआई को संभालना और उस घटना में टाई जो वास्तव में मायने रखती है (यानी बटन के क्लिक ईवेंट की बजाय फॉर्म सबमिट सबमिट करें)।

+0

ऑनक्लिक का उपयोग करने से उपयोगकर्ता को प्रवेश करने और चेक को बाईपास करने की अनुमति मिल जाएगी। – Cfreak

34

यह करने के लिए अपने इनपुट बदलें:

<input type='submit' value='submit request' onclick='return btnClick();'> 

और अपने कार्य में झूठी वापसी

function btnClick() { 
    if (!validData()) 
     return false; 
} 
1

एक नियमित रूप से बटन के लिए बटन प्रस्तुत क्यों नहीं बदल, और क्लिक करें घटना पर, अपने प्रपत्र सबमिट अगर यह आपके सत्यापन परीक्षण पास करता है?

, उदा,

<input type='button' value='submit request' onclick='btnClick();'> 

function btnClick() { 
    if (validData()) 
     document.myform.submit(); 
} 
+1

प्रवेश मारने से चेक बाईपास हो जाएगा। Submit – Cfreak

+0

पर प्रयोग करें, फिर जावास्क्रिप्ट उपलब्ध नहीं होने पर यह बिल्कुल काम नहीं करेगा। Build on things that work। – Quentin

0

आप onSubmit की जरूरत है। onClick अन्यथा कोई भी एंटर दबा सकता है और यह आपके सत्यापन को बाईपास कर देगा। रद्द करने के लिए के रूप में। आपको झूठी वापसी की जरूरत है। कोड यह रहा:

<form onSubmit="return btnClick()"> 
<input type='submit' value='submit request'> 

function btnClick() { 
    if (!validData()) return false; 
} 

संपादित ऑनसबमिट प्रपत्र टैग में अंतर्गत आता है।

+0

यह काम नहीं करेगा। यदि डेटा मान्य है तो आप सच नहीं लौटते हैं। वापस सच रखो; btnClick() फ़ंक्शन – NickSoft

3

आप return false; की जरूरत है:

<input type='submit' value='submit request' onclick='return btnClick();' /> 

function btnClick() { 
    return validData(); 
} 
4

आप submit से button के प्रकार बदलना चाहिए:

<input type='button' value='submit request'> 
बजाय

<input type='submit' value='submit request'> 

आप तो जावास्क्रिप्ट और सहयोगी में जो कुछ भी कार्रवाई करने के लिए आप चाहते हैं यह

var btn = document.forms["frm_name"].elements["btn_name"]; 
btn.onclick = function(){...}; 

काम किया मुझे आशा है कि के लिए यह मदद करता है अपने बटन के नाम मिलता है।

0

यह आसान है, बस झूठी वापसी;

नीचे कोड jQuery का उपयोग कर ..

if(conditionsNotmet) 
{ 
return false; 
} 
3

कभी कभी onsubmit asp.net के साथ काम नहीं करेंगे सबमिट बटन की onclick भीतर चला जाता है।

मैंने इसे बहुत आसान तरीके से हल किया।

अगर हम इस तरह के एक रूप है

<form method="post" name="setting-form" > 
    <input type="text" id="UserName" name="UserName" value="" 
     placeholder="user name" > 
    <input type="password" id="Password" name="password" value="" placeholder="password" > 
    <div id="remember" class="checkbox"> 
    <label>remember me</label> 
    <asp:CheckBox ID="RememberMe" runat="server" /> 
    </div> 
    <input type="submit" value="login" id="login-btn"/> 
</form> 

अब आप प्रपत्र पोस्टबैक से पहले उस घटना पाने को पकड़ने और पोस्टबैक से रोकने और सभी ajax आप इस jQuery का उपयोग कर चाहते हैं कर सकते हैं।

$(document).ready(function() { 
      $("#login-btn").click(function (event) { 
       event.preventDefault(); 
       alert("do what ever you want"); 
      }); 
}); 
संबंधित मुद्दे