2018 এর আপডেট : আমি এই পুরানো উত্তরের জন্য সবেমাত্র কিছু পয়েন্ট পেয়েছি এবং কেবল এটি যুক্ত করতে চেয়েছিলাম যে অপারেশনকে আদর্শবান করে তোলার সবচেয়ে ভাল সমাধান হ'ল যাতে সদৃশ জমা দেওয়া নিরীহ হয়।
উদাহরণস্বরূপ, যদি ফর্মটি একটি অর্ডার তৈরি করে তবে ফর্মটিতে একটি অনন্য আইডি রাখুন। সার্ভারটি প্রথমবার সেই আইডি দিয়ে একটি অর্ডার তৈরির অনুরোধটি দেখে, এটি তৈরি করা উচিত এবং "সাফল্য" সাড়া দেওয়া উচিত। পরবর্তী সাবমিশনগুলির "সাফল্য" সাড়া দেওয়া উচিত (যদি ক্লায়েন্ট প্রথম প্রতিক্রিয়া না পায়) তবে কোনও পরিবর্তন করা উচিত নয়।
প্রতিযোগিতার পরিস্থিতি রোধ করতে ডাটাবেসে স্বতন্ত্রতা পরীক্ষার মাধ্যমে নকলগুলি সনাক্ত করা উচিত।
আমি মনে করি আপনার সমস্যাটি এই লাইন:
$('input').attr('disabled','disabled');
আমি অনুমান করেছি সহ আপনি সমস্ত ইনপুটগুলি অক্ষম করছেন, যার ফর্মটি জমা দেওয়ার কথা রয়েছে ones
কেবল জমা বাটন (গুলি) অক্ষম করতে, আপনি এটি করতে পারেন:
$('button[type=submit], input[type=submit]').prop('disabled',true);
তবে আমি মনে করি না যে এই বোতামগুলি অক্ষম থাকলেও আইই ফর্মটি জমা দেবে। আমি একটি ভিন্ন পদ্ধতির পরামর্শ দিতে চাই।
এটি সমাধানের জন্য একটি jQuery প্লাগইন
আমরা কেবল নিম্নলিখিত কোড সহ এই সমস্যাটি সমাধান করেছি। data()
ফর্মটি ইতিমধ্যে জমা দেওয়া বা না হিসাবে চিহ্নিত করতে এখানে কৌশলটি jQuery এর ব্যবহার করছে । এইভাবে, আমাদের জমা দেওয়া বোতামগুলির সাথে গোলযোগ করতে হবে না, যা আইই বাইরে বেরিয়ে আসে।
// jQuery plugin to prevent double submission of forms
jQuery.fn.preventDoubleSubmission = function() {
$(this).on('submit',function(e){
var $form = $(this);
if ($form.data('submitted') === true) {
// Previously submitted - don't submit again
e.preventDefault();
} else {
// Mark it so that the next submit can be ignored
$form.data('submitted', true);
}
});
// Keep chainability
return this;
};
এটি এর মতো ব্যবহার করুন:
$('form').preventDoubleSubmission();
যদি এজেএক্স ফর্মগুলি থাকে যা প্রতি পৃষ্ঠা লোডে একাধিকবার জমা দেওয়ার মঞ্জুরি দেওয়া উচিত , আপনি তাদেরকে এমন একটি শ্রেণি প্রদান করতে পারেন যা এটি নির্দেশ করে, তারপরে এটিকে আপনার নির্বাচক থেকে বাদ দিন:
$('form:not(.js-allow-double-submission)').preventDoubleSubmission();