JQuery ব্যবহার করে - ফর্ম জমা দেওয়া থেকে রোধ করা হচ্ছে


178

Jquery ব্যবহার করে কোনও ফর্ম জমা দেওয়ার থেকে কীভাবে বাধা দেব?

আমি সবকিছু চেষ্টা করেছিলাম - 3 টি পৃথক অপশন দেখুন যা আমি নীচে চেষ্টা করেছি তবে এটি সব কাজ করে না:

    $(document).ready(function() { 

            //option A
            $("#form").submit(function(e){
                e.preventDefault();
            });

            //option B
            $("#form").submit(function(e){
                stopEvent(e);
            });

            //option C
            $("#form").submit(function(){
                return false;
            });
    });

ভুল হতে পারে?

আপডেট - এখানে আমার এইচটিএমএল:

    <form id="form" class="form" action="page2.php" method="post"> 
       <!-- tags in the form -->
       <p class="class2">
           <input type="submit" value="Okay!" /> 
       </p>
    </form>

এখানে কি কিছু ভুল আছে?


আপনার এইচটিএমএল দেখান কারণ আপনার নির্বাচক সম্পূর্ণরূপে ভুল হওয়া ব্যতীত প্রতিরোধের ডিফল্ট বা মিথ্যা হিসাবে পোস্ট করেছেন তেমন কোনও ভুল নেই।
স্পার্কি

1
return false;.submit()আমার জন্য কাজ করার পরে ! আমার একই সমস্যা ছিল
d -_- বি

হ্যান্ডলারের মধ্যে জাভাস্ক্রিপ্টের ত্রুটি থাকলে e.preventDefault();কোডটি পৌঁছানো / সম্পাদন করা হয় না।
টম

উত্তর:


263

দুটি জিনিস দাঁড়ানো:

  • এটি সম্ভব যে আপনার ফর্মের নামটি নেই form। বরং # টি ড্রপ করে ট্যাগটি দেখুন।
  • এছাড়াও e.preventDefaultসঠিক জিকুয়েরি সিনট্যাক্স, যেমন

        //option A
        $("form").submit(function(e){
            e.preventDefault();
        });

অপশন সিতেও কাজ করা উচিত। আমি বি বিকল্পের সাথে পরিচিত নই

একটি সম্পূর্ণ উদাহরণ:

<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

        <script type='text/javascript'>
         $(document).ready(function() {
            //option A
            $("form").submit(function(e){
                alert('submit intercepted');
                e.preventDefault(e);
            });
        });
        </script>
    </head>

    <body>
        <form action="http://google.com" method="GET">
          Search <input type='text' name='q' />
          <input type='submit'/>
        </form>
    </body>
</html>

2
অন্য কিছু ভুল। আমি এই কৌশলটি প্রতিদিন ব্যবহার করছি। সর্বোত্তম অনুমান পৃষ্ঠায় জাভাস্ক্রিপ্ট ত্রুটি আছে, সম্ভবত এটি ফায়ারব্যাগ দিয়ে পরীক্ষা করে দেখুন?
ফিলিপ ফৌরি

@ লুচি ওয়েদারফোর্ড, আমি আমার উত্তরটি কাজ করে এমন একটি নমুনা দিয়ে আপডেট করেছি। আপনি কিছু স্পট।
ফিলিপ ফৌরি

আপনার আপডেটে এইচটিএমএল আমি লক্ষ্য করেছি যে আপনার ফর্মের জন্য শ্রেণি বৈশিষ্ট্য রয়েছে। থেকে আপনার jQuery নির্বাচক পরিবর্তন $('#form')করতে $('.form')বর্গ বৈশিষ্ট্যাবলী জন্য।
ফিলিপ ফৌরি

1
ধন্যবাদ! আমি একই কোডে আপনার কোডটি ব্যবহার করে শেষ করেছি, এবং এটি কার্যকর হয়েছে তবে এখনও কী ভুল ছিল তা নিশ্চিত করে বলা যায় না, তবে এখন এটি বেশ ভাল। ধন্যবাদ!
লুসি ওয়েদারফোর্ড

1
@ অ্যাঞ্জেলো রিগো ই হ'ল প্যারামিটারে আপনি যে নামটি দেন তা কেবল এই ক্ষেত্রে এটি জমা দেওয়ার ঘটনা।
squall3d

34

আপনার সম্ভবত পৃষ্ঠায় কয়েকটি ফর্ম রয়েছে এবং $ ('ফর্ম') ব্যবহার করছেন submit পরিবর্তে শ্রেণি নির্বাচক ব্যবহার করুন, বা এটি চেষ্টা করুন:

$('form').each(function(){
    $(this).submit(function(e){
        e.preventDefault();
        alert('it is working!');
        return  false;
    })
}) 

বা এর আরও ভাল সংস্করণ:

$(document).on("submit", "form", function(e){
    e.preventDefault();
    alert('it works!');
    return  false;
});

1
আমার ক্ষেত্রে, মিথ্যা ফিরিয়ে দেওয়া একটি মূল বিষয় ছিল।
এলকুইমিস্ট

19

ফর্ম জমা দেওয়ার ব্যবহারকে ডিফল্ট / প্রতিরোধ করতে

e.preventDefault();

ইভেন্ট বুদবুদ ব্যবহার বন্ধ করতে

e.stopPropagation();

ফর্ম জমা দিতে বাধা দিতে 'রিটার্ন মিথ্যা' কাজ করা উচিত।


এই উত্তরটি দেখুন কারণ jQuery এগুলি অন্যভাবে পরিচালনা করে। stackoverflow.com/questions/1357118/…
স্পার্কি

1
এই পরীক্ষা করে দেখুন ঘটনা bubling বুঝতে quirksmode.org/js/events_order.html
আলফা

2
উপর jQuery এর এপিআই পদ বলে: "একটি ইভেন্ট হ্যান্ডলার থেকে মিথ্যা রিটার্নিং স্বয়ংক্রিয়ভাবে কল হবে event.stopPropagation()এবং event.preventDefault()একটি। falseমান এছাড়াও জন্য একটি সাঁটে লেখার হিসাবে হ্যান্ডলার জন্য প্রেরণ করা সম্ভব function(){ return false; }।"
পল

7

আমারও একই সমস্যা ছিল। আপনি যা চেষ্টা করেছিলেন তাও আমি চেষ্টা করেছিলাম। তারপরে আমি আমার পদ্ধতিটি jquery ব্যবহার না করে ফর্ম ট্যাগটিতে "onsubmit" বৈশিষ্ট্যটি ব্যবহার করে পরিবর্তন করি।

<form onsubmit="thefunction(); return false;"> 

এটা কাজ করে।

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


1
এটি false;এবং এর মধ্যে পার্থক্য return false;। আপনার দরকারonsubmit="return thefunction();"
xr280xr

4

আমার একই সমস্যা ছিল এবং আমি এইভাবে সমাধান করেছি (মার্জিত নয় তবে এটি কাজ করে):

$('#form').attr('onsubmit','return false;');

আমার মতে এটির সুবিধা রয়েছে যে আপনি যে কোনও সময় পরিস্থিতি ফিরিয়ে দিতে পারবেন:

$('#form').attr('onsubmit','return true;');

ফর্মটি $('#form').removeAttr('onsubmit');
ফেরত

4

ফর্ম উপাদানটিতে নয় উপাদান জমা দেওয়ার ইভেন্টটিতে ইভেন্টটি সংযুক্ত করুন। উদাহরণস্বরূপ আপনার এইচটিএমএলে এটি করুন

$('input[type=submit]').on('click', function(e) {
    e.preventDefault();
});

2

হ্যাঁ দাও সাবজেক্ট দাও যদি অন্যথায় ত্রুটি দেখায় তবে ফর্মটি বৈধ কিনা তা আপনি কেবল খতিয়ে দেখতে পারেন।

এইচটিএমএল

<form id="form" class="form" action="page2.php" method="post">
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />
    <input type="text" class="check-validity" value="" />

    <input type="submit" value="Okay!" />
</form>

জাভাস্ক্রিপ্ট

    $(document).ready(function () {
        var isFormValid = true;

        function checkFormValidity(form){
            isFormValid = true;
            $(form).find(".check-validity").each(function(){
                var fieldVal = $.trim($(this).val());
                if(!fieldVal){
                    isFormValid = false;
                }
            });
        }


        //option A
        $("#form").submit(function (e) {
            checkFormValidity("#form");
            if(isFormValid){
                alert("Submit Form Submitted!!! :D");
            }else{
                alert("Form is not valid :(");
            }
            e.preventDefault();
        });
    });

1

যখন আমি <form>কোনও বৈশিষ্ট্য ছাড়াই ট্যাগটি ব্যবহার করি id="form"এবং এটিকে সরাসরি তার নাম দিয়ে কল করি যখন এটি সরাসরি আমার সাথে কাজ করে।
এইচটিএমএল ফাইলে আপনার কোড:

<form action="page2.php" method="post">

এবং জ্যাকুরি স্ক্রিপ্টে:

$(document).ready(function() {
      $('form').submit(function(evt){
          evt.preventDefault();// to stop form submitting
      });
 });

1

$('#form')সঙ্গে একটি উপাদান সন্ধান করে id="form"

$('form') ফর্ম উপাদান জন্য সন্ধান করে




0

এটি কাজ করে বলে মনে হয় এবং কিছুটা সহজ হতে পারে:

$('#Form').on('submit',function(){
    return false;
})

0

JQuery ব্যবহার করে, আপনি নিম্নলিখিতটি করতে পারেন:

1- ইভেন্টটি গুলি চালানো থেকে আটকাতে গিয়ে একটি জমা দিন বোতামের সাহায্যে নেটিভ ফর্ম জমা দিন ইভেন্টটি ব্যবহার করুন

2- ফর্মটি যাচাই করুন বৈধ সম্পত্তি এটি নিম্নলিখিত হিসাবে প্রয়োগ করা যেতে পারে:

1- এইচটিএমএল:

 <form id="yourForm">
    <input id="submit" type="submit" value="Save"/>
</form>

2- জাভাস্ক্রিপ্ট

 $("form").on("submit", function (e) {
        e.preventDefault();
        if ($(this).valid()) {  
           alert('Success!');
        }
    });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.