मैं सबमिट बटन ऑनक्लिक ईवेंट में फ़ॉर्म सबमिशन कैसे रद्द करूं?


99

मैं एक ASP.net वेब एप्लिकेशन पर काम कर रहा हूं।

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

मैं कुछ इस तरह लिखना चाहता हूं:

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

मैं यह कैसे करु?


ouch, यह मेरे सिर पर चोट कर रहा है। मेरे पास कई अलग-अलग submitइनपुट्स हैं। मुझे लगता है कि मैं इस पृष्ठ पर सर्वर-साइड नियंत्रणों का उपयोग करने की कोशिश करूंगा।
विवियन नदी

जवाबों:


183

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

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

यदि isValidForm()रिटर्न मिलता है false, तो आपका फॉर्म जमा नहीं होता है।

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

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

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

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

3
यदि आप ASP.NET वेब प्रपत्रों का उपयोग कर रहे हैं (संकेत: नहीं) तो अन्य रूपों को शामिल करने का प्रयास न करें। वे बस असंगत हैं। मैंने सुना है ASP.NET MVC आपको मुहावरेदार मार्कअप का उपयोग करके वेब एप्लिकेशन बनाने देता है।
क्वेंटिन

@ डेविड, यदि अन्य रूपों का उपयोग ASP.net वेब प्रपत्रों के साथ असंगत है, तो क्या मुझे केवल सर्वर-साइड नियंत्रणों का उपयोग करना चाहिए?
विवियन नदी

2
किसी और ने आपके जैसे stackoverflow.com/a/23604664/1639385 पर सटीक उत्तर दिया है । मुझे लगता है कि यह बहुत ज्यादा संयोग था।
यूलिसिस

43

इसमें अपना इनपुट बदलें:

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

और अपने फंक्शन में झूठा लौटें

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

13

आपको बदलने की जरूरत है

onclick='btnClick();'

सेवा

onclick='return btnClick();'

तथा

cancelFormSubmission();

सेवा

return false;

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


2
Onclick का उपयोग करने से उपयोगकर्ता को हिट दर्ज करने और चेक को बायपास करने की अनुमति मिलेगी।
Cfreak

7

कभी कभी onsubmitasp.net के साथ काम नहीं करेगा।

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

अगर हमारे पास ऐसा कोई फॉर्म है

<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>

अब आप फॉर्मबैक से पहले उस ईवेंट को प्राप्त कर सकते हैं और उसे पोस्टबैक से रोक सकते हैं और इस jquery का उपयोग करने वाले सभी ajax करें।

$(document).ready(function () {
            $("#login-btn").click(function (event) {
                event.preventDefault();
                alert("do what ever you want");
            });
 });

5

आप से प्रकार बदलना चाहिए 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(){...};

मेरे लिए काम किया आशा है कि यह मदद करता है।


4

आपको इसकी आवश्यकता है return false;:

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

function btnClick() {
    return validData();
}

1

सबमिट बटन को एक नियमित बटन में क्यों न बदलें, और क्लिक इवेंट पर, अपना फॉर्म सबमिट करें यदि यह आपके सत्यापन परीक्षणों को पास करता है?

जैसे

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

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

1
हिट दर्ज करने से चेक बायपास हो जाएगा। OnSubmit का प्रयोग करें
Cfreak

यदि जावास्क्रिप्ट उपलब्ध नहीं है तो यह बिल्कुल भी काम नहीं करेगा। <a href=" icant.co.uk/articles/pragmatic-progressive-enhancement/… उन चीजों पर जो वर्कस्टेशन / ग्राफ़।
क्वेंटिन

1

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

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

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

संपादन onSubmit प्रपत्र टैग में है।


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

1

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

नीचे दिए गए कोड jquery का उपयोग करते हुए सबमिट बटन के ऑनक्लिक के भीतर जाता है।

if(conditionsNotmet)
{
return false;
}

0

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

तथा

function btnClick() {
    return validData();
}

2
एन्ट्री मारने से चेक बाईपास हो जाएगा। OnSubmit का प्रयोग करें
Cfreak

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

1
इसे काम करने के लिए इससे अधिक करना आवश्यक है। मैंने फंक्शनलिनो को सही या गलत बनाने की कोशिश की है और इससे कोई फर्क नहीं पड़ता है।
विवियन नदी

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

1
इसके अलावा, मैं उपयोग ev.preventDefault()या ev.returnValue = falseडिफ़ॉल्ट व्यवहार को रद्द करने के लिए, लेकिन घटना को रोकने नहीं रोकना चाहिए, अगर अन्य नियंत्रण एक ही तत्व पर एक ही घटना का निरीक्षण करते हैं। return falseजब आप इवेंट को बबलिंग से रोकना चाहते हैं और डिफ़ॉल्ट क्रिया को रद्द करना चाहते हैं, तब ही उपयोग करें । इस लेख को देखें ।
क्लेमेन स्लावी

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

0
<input type='button' onclick='buttonClick()' />

<script>
function buttonClick(){
    //Validate Here
    document.getElementsByTagName('form')[0].submit();
}
</script>

2
एक उपयोगी उत्तर के लिए इस प्रतिक्रिया को बढ़ाया जाना चाहिए। समझाएं कि यह सवाल का जवाब क्यों है।
जीरो हियर

0

JQuery के साथ और भी सरल है: Asp.Net MVC और Asp.Core में काम करता है

<script>
    $('#btnSubmit').on('click', function () {

        if (ValidData) {
            return true;   //submit the form
        }
        else {
            return false;  //cancel the submit
        }
    });
</script>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.