नोड पेजों पर भी ड्रुपल कई फॉर्म सबमिट्स को नहीं रोकता है। यह QA सर्वर साइड पर इसे ठीक करने का सुझाव देता है।
क्लिक करने के बाद मैं सबमिट बटन को कैसे निष्क्रिय कर सकता हूं?
कोई और उपाय?
नोड पेजों पर भी ड्रुपल कई फॉर्म सबमिट्स को नहीं रोकता है। यह QA सर्वर साइड पर इसे ठीक करने का सुझाव देता है।
क्लिक करने के बाद मैं सबमिट बटन को कैसे निष्क्रिय कर सकता हूं?
कोई और उपाय?
जवाबों:
यह केवल देव में है लेकिन Hide Submit मॉड्यूल ट्रिक करेगा। सुविधाओं में से एक है:
क्लिक करने के बाद सबमिट बटन छिपाएं (या अक्षम करें)
मैंने अभी इसे एक देव साइट पर स्थापित किया है और यह नोड ऐड फॉर्म के लिए अच्छी तरह से काम करता है; जब आप सबमिट बटन पर क्लिक करते हैं तो इसे छिपाया जाता है और एक लोडिंग छवि और एक 'कृपया प्रतीक्षा करें ...' संदेश के साथ प्रतिस्थापित किया जाता है, इससे पहले कि फॉर्म अंतिम रूप से सबमिट किया जाता है। मैंने इसे किसी अन्य रूप में नहीं आजमाया है।
hook_form_alter()
- यदि यह उपयोग कर रहा है hook_form_FORMID_alter()
, तो इसे सामान्य पर स्विच करें hook_form_alter()
। यदि यह सामान्य है hook_form_alter()
, तो अंदर के साथ, कुछ जोड़ने के or
लिए 'इस में है if
।
यहाँ Drupal 7 के लिए समाधान है। कोड Hide Submit मॉड्यूल का सरलीकृत संस्करण है।
यह कोड "अधिक जोड़ें" बटन और AJAX रूपों के साथ भी ठीक काम करता है।
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;
}
});
});
}
};
सबसे आसान तरीका फॉर्म सबमिट करने के बाद बटन को निष्क्रिय करने के लिए थीम आधारित जावास्क्रिप्ट समाधान करना है। Theme.info फ़ाइल में, अपनी जावास्क्रिप्ट फ़ाइल डालें ताकि इसे थीम एपीआई द्वारा लोड किया जा सके।
scripts[] = js/themename-script.js
अब थीमनेम-script.js में निम्न प्रकार देखने के लिए Drupal.behaviors.themename अनुभाग जोड़ें:
Drupal.behaviors.themename = function()
{
$('.node-form').submit(function(){
$('#edit-submit').attr("disabled", "disabled");
$('#edit-preview').attr("disabled", "disabled");
});
}
तो प्रवाह इस प्रकार है:
मुझे यकीन है कि अगर कुछ अजाक्स प्रसंस्करण है कि ऊपर खतरनाक हो सकता है और फार्म जमा फिर से कभी नहीं किया जा सकता है अगर फॉर्म_एपी सत्यापन में कोई त्रुटि पकड़ी जाती है तो यह परीक्षण करें और अपनी आवश्यकताओं को पूरा करने के लिए अनुकूलित करें। मैंने दोनों बटन अक्षम कर दिए हैं क्योंकि आप अभी भी पूर्वावलोकन बटन पर क्लिक कर सकते हैं जबकि सबमिट बटन अक्षम था। जाहिर है कि आपका दुस्साहस मेरे अलग-अलग हैं।
Drupal.behaviors
घोषणा शैली का उपयोग कर रहे हैं; यह Drupal 7 के लिए काम नहीं करेगा। यह होना चाहिए Drupal.behaviors.themename = { attach: function (context, settings) { // ...
। देखें Drupal 7 में जावास्क्रिप्ट प्रबंध अधिक जानकारी के लिए