ক্লিক করার পরে কীভাবে জমা দিন বাটনটি অক্ষম করবেন?


13

ড্রুপাল একাধিক ফর্ম জমাগুলি এমনকি নোড পৃষ্ঠাগুলিতেও আটকাচ্ছে বলে মনে হচ্ছে না। এই কিউএ সার্ভারের দিকে এটি ঠিক করার পরামর্শ দেয়।

ক্লিক করার পরে কীভাবে আমি জমা বোতামটি অক্ষম করতে পারি?

অন্য কোন সমাধান?


দ্রুপালের ফর্ম এপিআই কি তার ফর্ম টোকেন মান চেকের জন্য ধন্যবাদ ডাবল জমা দেওয়ার প্রতিরোধ করে না? একই টোকেন সহ দুবার একটি ফর্ম জমা দিতে পারবেন না?
জননাথন এলমোর

উত্তর:


12

এটি কেবলমাত্র দেবের মধ্যে তবে লুকান জমা দিন মডিউলটি কৌশলটি করবে। বৈশিষ্ট্যগুলির মধ্যে একটি হ'ল:

ক্লিক করার পরে সাবমিট বাটনটি লুকান (বা অক্ষম করুন)

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


আপনার নিজস্ব কাস্টম মডিউলগুলির ফর্মগুলিতে কাজ করার জন্য কীভাবে লুকান জমা দেওয়ার মডিউলটি পাবেন সে সম্পর্কে কোনও ধারণা? আমি আশা করছিলাম এটি সাইট প্রশস্ত হবে, তবে এটি তেমনটি দেখা যায় না।
ব্যবহারকারী785179

@ ব্যবহারকারী785179 দেখুন কীভাবে এটি প্রয়োগ করে hook_form_alter()- যদি এটি ব্যবহার করা হয় তবে এটি জেনেরিকটিতে hook_form_FORMID_alter()স্যুইচ করুন hook_form_alter()। যদি জেনেরিক হয় hook_form_alter()যদি ভিতরে সঙ্গে, কিছু যোগ or'এই গুলি if
মোআট

এই সমাধানটি সম্পর্কে সাবধানতা অবলম্বন করুন - হাইড সাবমিট মডিউলটি আজাক্স আপলোডগুলিকে ভেঙে দেয়, স্ব-অসম্পূর্ণ সমস্যা সৃষ্টি করে এবং কিছু ক্ষেত্রে সাবমিট বোতামটি প্রথম ক্লিকে কিছু না করার কারণ ঘটায়। আমাকে কেবল একটি সাইট থেকে এটি আনইনস্টল করতে হয়েছিল।
জেনাল্যাম্পটন

@ জেন স্ট্রেঞ্জ, আমি এরকম কোনও সমস্যা না দেখে কয়েক বছর ধরে কয়েক ডজন সাইটে এটি ব্যবহার করছি। সম্ভবত আপনার কাছে এমন আরও একটি মডিউল ইনস্টল রয়েছে যা এতে হস্তক্ষেপ করে
ক্লাইভ

10

এখানে দ্রুপাল 7. এর সমাধান রয়েছে Code কোডটি হাইড জমা দিন মডিউলটির সহজতর সংস্করণ।

এই কোডটি "আরও যুক্ত করুন" বোতাম এবং এজেএক্স ফর্মগুলির সাথেও দুর্দান্ত কাজ করে।

Drupal.behaviors.hideSubmitButton = {
  attach: function(context) {
    $('form.node-form', context).once('hideSubmitButton', function () {
      var $form = $(this);
      $form.find('input.form-submit').click(function (e) {
        var el = $(this);
        el.after('<input type="hidden" name="' + el.attr('name') + '" value="' + el.attr('value') + '" />');
        return true;
      });
      $form.submit(function (e) {
        if (!e.isPropagationStopped()) {
          $('input.form-submit', $(this)).attr('disabled', 'disabled');
          return true;
        }  
      });
    });
  }
};

আমি প্রশাসনিক থিম এ প্রয়োগ করতে চাই। Sitename.js একটি ফাইল তৈরি করুন এবং এতে উপরের কোডটি অনুলিপি করেছেন। এটা কাজ করছে না. আমার কি জিনিস সামঞ্জস্য করা উচিত?
জাস্টমে

@ জুস্টমে আপনি নিজের সিটেনাম.জেএস ফাইলটি কোথায় রেখেছেন? যদি কোনও মডিউল বা সাব-থাইমে থাকে তবে আপনাকে এটি .info ফাইলটিতে যুক্ত করতে হবে যাতে এটি লোড হয়, বা পৃষ্ঠায় পাওয়ার জন্য অন্য কোথাও drupal_add_js () কল করুন। আপনি কি এটি পৃষ্ঠা উত্সে যুক্ত হতে দেখছেন?
জেনাল্যাম্পটন

থেক্সস এটি সমাধান করেছে। আমি জানতাম না যে এটির মধ্যে হওয়া উচিত: (ফাংশন ($) {এবং}) (jQuery); জেএস ফাইল এ। শর্মের মতো কাজ করে !!
জাস্টমে

0

ফর্ম জমা দেওয়ার পরে বোতামটি অক্ষম করার জন্য থিম ভিত্তিক জাভাস্ক্রিপ্ট সমাধান করা সহজ উপায় way থিম.info ফাইলে আপনার জাভাস্ক্রিপ্ট ফাইলটি রাখুন যাতে এটি থিম এপিআই দ্বারা লোড করা যায়।

scripts[] = js/themename-script.js

এখন themename -cript.js এ Drupal.behaviors.themename বিভাগটি নীচের মত দেখতে যুক্ত করুন:

Drupal.behaviors.themename = function()
{
  $('.node-form').submit(function(){
    $('#edit-submit').attr("disabled", "disabled");
    $('#edit-preview').attr("disabled", "disabled");
  });
}

সুতরাং প্রবাহটি নিম্নরূপ:

  1. থিম জাভাস্ক্রিপ্ট লোড করে
  2. Drupal.behaviors.themename পৃষ্ঠা লোড উপর নিক্ষেপ করা হয়
  3. নোড অ্যাড ফর্মটি জমা দেওয়ার সময় (উপরের উদাহরণের ভিত্তিতে শ্রেণি, এটি ফর্মের ধরণের উপর ভিত্তি করে শ্রেণিবদ্ধ করা যেতে পারে) জমা বোতামগুলি অক্ষম করুন (জমা দিন এবং পূর্বরূপ দেখুন) যাতে এটি আবার ক্লিক করা যায় না

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


2
আপনি পুরানো Drupal.behaviorsঘোষণার স্টাইল ব্যবহার করছেন ; এটি ড্রুপাল for এর জন্য কাজ করবে না It এটি হওয়া দরকার Drupal.behaviors.themename = { attach: function (context, settings) { // ...। আরও তথ্যের জন্য ড্রুপাল 7 এ জাভাস্ক্রিপ্ট পরিচালনা করা দেখুন
ক্লাইভ

ঘোষণার স্টাইল স্থির
ইউজিন ফিদেলিন

এই স্ক্রিপ্ট 'নোড-ফর্ম' থেকে কোন মানগুলি প্রতিস্থাপন করা উচিত?
pal4Live

আমি এডমিনাল থিমটিতে কাজ করার চেষ্টা করেছি তবে কোনও ভাগ্য নেই। প্রশাসনিক মাধ্যমে থীমেনামটির নাম পরিবর্তন করুন এবং সিটেনাম.জেজে সম্পূর্ণ কোড অনুলিপি করেছেন এবং এটি থিম তথ্য ফাইলে যুক্ত করেছেন। তবুও আমি একই ফর্মটির আরও সহজে জমা দিতে পারি।
জাস্টমে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.