সাবলেট বোতাম অনক্লিক ইভেন্টে আমি কীভাবে ফর্ম জমা বাতিল করব?


101

আমি একটি ASP.net ওয়েব অ্যাপ্লিকেশন উপর কাজ করছি।

সাবমিট বাটন সহ আমার একটি ফর্ম আছে। জমা দেওয়ার বোতামটির কোডটি দেখতে মনে হচ্ছে <input type='submit' value='submit request' onclick='btnClick();'>

আমি নীচের মতো কিছু লিখতে চাই:

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

আমি এটা কিভাবে করবো?


ওহ, এটা আমার মাথা ব্যাথা করছে। আমার বিভিন্ন আলাদা submitইনপুট রয়েছে। আমি মনে করি আমি এই পৃষ্ঠায় সার্ভার-সাইড নিয়ন্ত্রণগুলি ব্যবহার করে চেষ্টা করব।
ভিভিয়ান নদী

উত্তর:


186

আপনি করা থেকে ভাল ...

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

যদি isValidForm()ফেরত দেয় false, তবে আপনার ফর্মটি জমা দেয় না।

আপনার ইভেন্ট হ্যান্ডলারটি সম্ভবত ইনলাইন থেকে সরানো উচিত।

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

ভাল onsubmitলাগছে , তবে মনে হচ্ছে যে আমি যখনই এএসপি নেট ব্যবহার করছি তখনই আমি কাজ করতে পারব না কেননা এসপ নেটওয়ার্ডটি নিজের মতো করে সমস্ত কিছু গুটিয়ে রাখে ...
ভিভিয়ান রিভার

6
আপনি তার দ্বিতীয় পরামর্শ ব্যবহার করতে পারেন। ইনলাইন জাভাস্ক্রিপ্ট যেভাবেই হোক শয়তান।
স্টিফেন

4
আপনি যদি এএসপি.এনইটি ওয়েব ফর্মগুলি ব্যবহার করছেন (ইঙ্গিত: না) তবে অন্য ফর্মগুলি অন্তর্ভুক্ত করার চেষ্টা করবেন না। এগুলি কেবল বেমানান। আমি শুনছি এএসপি.নেট এমভিসি আপনাকে আইডোমেটিক মার্কআপ ব্যবহার করে ওয়েব অ্যাপ তৈরি করতে দেয়।
কোয়ান্টিন

@ ডেভিড, যদি অন্য ফর্মগুলি ব্যবহার করা এএসপিএন ওয়েব ফর্মগুলির সাথে সামঞ্জস্যপূর্ণ না হয় তবে আমি কি কেবল সার্ভার-সাইড নিয়ন্ত্রণগুলি ব্যবহার করব?
ভিভিয়ান নদী

4
আপনার মতো অন্য কেউ স্ট্যাকওভারফ্লো . com/a/23604664/ 1639385 এর মতো উত্তর দিয়েছেন । আমি মনে করি এটি খুব একটা কাকতালীয় ঘটনা ছিল।
ইউলিসেস আলভেস

43

এতে আপনার ইনপুটটি পরিবর্তন করুন:

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

এবং আপনার ফাংশনে মিথ্যা ফিরিয়ে দিন

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

14

তোমাকে বদলাতে হবে

onclick='btnClick();'

প্রতি

onclick='return btnClick();'

এবং

cancelFormSubmission();

প্রতি

return false;

তাই বলা হয়, আমি পক্ষে স্বকীয় ঘটনা বৈশিষ্ট্যাবলী এড়ানোর চেষ্টা চাই বিচক্ষণ জাতীয় ঘটনা যে সত্যিই গুরুত্বপূর্ণ মধ্যে এপিআই এবং টাই হ্যান্ডলিং একটি ভাল ঘটনা আছে যা একটি লাইব্রেরি (যেমন Yui বা jQuery এর হিসাবে) সঙ্গে (অর্থাত ফর্মের পরিবর্তে ঘটনা জমা বোতামের ক্লিক ইভেন্ট)।


4
অনক্লিক ব্যবহার করা ব্যবহারকারীর প্রবেশদ্বারে প্রবেশ করতে এবং চেকটিকে বাইপাস করতে দেয়।
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 ব্যবহার করতে চান এমন সমস্ত এজাক্স করতে পারেন।

$(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();
} 

4
এন্টার দিয়ে আঘাত করা চেকটিকে বাইপাস করবে। সাবস্কিটটি ব্যবহার করুন
Cfreak

তাহলে জাভাস্ক্রিপ্ট উপলব্ধ না থাকলে এটি কিছুতেই কাজ করবে না। <a href=" icant.co.uk/articles/pragmat-progressive-enhancement/… যে জিনিসগুলিতে কাজ করে সে সম্পর্কে </ b>
কোয়ান্টিন

1

আপনি প্রয়োজন onSubmit। না onClickঅন্যথায় কেউ এইমাত্র প্রেস লিখতে পারেন এবং এটি আপনার বৈধতা বাইপাস করবে। বাতিল হিসাবে। আপনাকে মিথ্যা ফিরতে হবে কোডটি এখানে:

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

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

সাবমিট সম্পাদনা ফর্ম ট্যাগের অন্তর্ভুক্ত।


এটি কাজ করবে না। যদি ডেটা বৈধ হয় তবে আপনি সত্য ফিরে পাবেন না। সত্য প্রত্যাবর্তন করা; বিটিএন ক্লিক () ফাংশন শেষে
নিকসফট

1

এটি সহজ, খালি ফিরে আসুন;

নীচের কোডটি jquery ব্যবহার করে জমা বোতামের অন্লিকের মধ্যে চলে যায় ..

if(conditionsNotmet)
{
return false;
}

0

ব্যবহার onclick='return btnClick();'

এবং

function btnClick() {
    return validData();
}

4
এন্টার চাপলে চেকটি বাইপাস হবে। সাবস্কিটটি ব্যবহার করুন
Cfreak

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

4
এটি কাজ করতে এটির চেয়ে আরও বেশি কিছু করা প্রয়োজন। আমি ফান্টিনোকে সত্য বা মিথ্যা ফেরত দেওয়ার চেষ্টা করেছি এবং দেখে মনে হয় এটি কোনও পার্থক্য করে না।
ভিভিয়ান নদী

4
তার উত্তরটি সঠিক। উত্সাহিত। আপনাকে এটিকে ইনপুট
ট্যাগেও

4
এছাড়াও, আমি বরং ব্যবহার করতে ev.preventDefault()বা ev.returnValue = falseডিফল্ট আচরণ বাতিল করতে বা ইভেন্ট বুদবুদ প্রতিরোধ করতে চাই না , যদি অন্যান্য নিয়ন্ত্রণগুলি একই উপাদানটিতে একই ইভেন্টটি পর্যবেক্ষণ করে। return falseআপনি যখন ইভেন্টটি বুদবুদ হওয়া থেকে থামাতে চান এবং ডিফল্ট ক্রিয়াটি বাতিল করতে চান কেবল তখনই ব্যবহার করুন । এই নিবন্ধটি দেখুন ।
ক্লেনেন স্লাভিč

ইভেন্ট হ্যান্ডলারটিতে এটি ফিরিয়ে দেওয়া হ'ল উত্তর থেকে পাওয়া তথ্যগুলির একটি খুব বড় অংশ। তা ছাড়া, উত্তরটি অসম্পূর্ণ এবং একটি উত্সাহব্যঞ্জক হিসাবে উপযুক্ত হতে সাহায্য করে না।
কোয়ান্টিন

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

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

4
দরকারী উত্তরের জন্য এই প্রতিক্রিয়াটি বাড়ানো দরকার। কেন এটি প্রশ্নের উত্তর in
জেরোইন হাইয়ার

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>

0

এটি খুব পুরানো থ্রেড তবে এটি অবশ্যই লক্ষ্য করা যায়। অতএব নোটটি যে প্রস্তাবিত সমাধানগুলি এখন আর টু ডেট নেই এবং আধুনিক জাভাস্ক্রিপ্টটি আরও ভাল।

<script>
document.getElementById(id of the form).addEventListener(
    "submit",
    function(event)
    {
        if(validData() === false)
        {
            event.preventDefault();
        }
    },
    false
);

ফর্মটি এমন ইভেন্ট হ্যান্ডলারটি গ্রহণ করে যা জমা দেওয়া পর্যবেক্ষণ করে। যদি সেখানে ফাংশনটি বৈধ ডেটা (এখানে দেখানো হয় না) একটি মিথ্যা রিটার্ন দেয় , পদ্ধতিটিকে PreventDefault বলে , যা ফর্মটি জমা দিতে দমন করে এবং ব্রাউজারটি ইনপুটটিতে ফিরে আসে। অন্যথায় ফর্মটি যথারীতি প্রেরণ করা হবে।

পিএস এটি অনসামিত বৈশিষ্ট্যটির সাথেও কাজ করে । তারপর anonymus ফাংশন ফাংশন (ইভেন্ট) {...} অ্যাট্রিবিউট মধ্যে আবশ্যক onsubmit ফর্মের। এটি সত্যই আধুনিক নয় এবং আপনি কেবল জমা দেওয়ার জন্য একটি ইভেন্ট হ্যান্ডলারের সাথে কাজ করতে পারেন। তবে আপনাকে কোনও অতিরিক্ত জাভাস্ক্রিপ্ট তৈরি করতে হবে না। এছাড়াও, এটি ফর্মের একটি বৈশিষ্ট্য হিসাবে সোর্স কোডে সরাসরি নির্দিষ্ট করা যেতে পারে এবং ফর্মটি ডিওমে সংহত না হওয়া পর্যন্ত অপেক্ষা করার দরকার নেই to

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.