Drupal, düğüm sayfalarında bile birden çok form gönderilmesini engellemiyor gibi görünüyor. Bu KG , sunucu tarafında düzeltilmesini önerir.
Tıkladıktan sonra gönder düğmesini nasıl devre dışı bırakabilirim?
Başka çözüm var mı?
Drupal, düğüm sayfalarında bile birden çok form gönderilmesini engellemiyor gibi görünüyor. Bu KG , sunucu tarafında düzeltilmesini önerir.
Tıkladıktan sonra gönder düğmesini nasıl devre dışı bırakabilirim?
Başka çözüm var mı?
Yanıtlar:
Bu sadece geliştiricidir ancak Submit'i Gizle modülü işinizi görecektir. Özelliklerden biri:
Gönder düğmesine tıklandıktan sonra gizleyin (veya devre dışı bırakın)
Ben sadece bir dev sitede yükledim ve düğüm ekleme formları için iyi çalışıyor gibi görünüyor; gönder düğmesini tıkladığınızda, gizlenir ve form gönderilmeden önce bir yükleme resmi ve bir 'Lütfen bekleyin ...' mesajı ile değiştirilir. Yine de başka şekillerde denemedim.
hook_form_alter()
- kullanılıyorsa hook_form_FORMID_alter()
jenerik olarak değiştirin hook_form_alter()
. O jenerik ise hook_form_alter()
iç eğer birlikte, bazı eklemek or
'bunda s if
.
İşte Drupal 7 için çözüm. Kod Submit modülünü basitleştirilmiş versiyonu.
Bu kod, "Daha fazla ekle" düğmeleri ve AJAX formlarıyla bile sorunsuz çalışır.
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;
}
});
});
}
};
En kolay yol, form gönderildikten sonra düğmeyi devre dışı bırakmak için tema tabanlı bir javascript çözümü yapmaktır. Theme.info dosyasına, javascript dosyanızı theme api tarafından yüklenebilecek şekilde yerleştirin.
scripts[] = js/themename-script.js
Şimdi themename-script.js dosyasında aşağıdaki gibi görünmesi için Drupal.behaviors.themename bölümüne ekleyin:
Drupal.behaviors.themename = function()
{
$('.node-form').submit(function(){
$('#edit-submit').attr("disabled", "disabled");
$('#edit-preview').attr("disabled", "disabled");
});
}
Böylece akış aşağıdaki gibidir:
Yukarıdaki tehlikeli olabilir ve form_api doğrulamasında bir hata yakalanırsa form gönderimi bir daha asla yapılamayacak bazı ajax işleme varsa eminim bu yüzden bunu test edin ve ihtiyaçlarınızı karşılamak için özelleştirin. Gönder düğmesi devre dışıyken önizleme düğmesini tıklayabildiğiniz için her iki düğmeyi de devre dışı bıraktım. Belli ki senin göçmen benim çeşitliliğim.
Drupal.behaviors
bildirim stilini kullanıyorsunuz; Drupal 7 için işe yaramayacak Drupal.behaviors.themename = { attach: function (context, settings) { // ...
. Daha fazla bilgi için Drupal 7'de JavaScript'i Yönetme konusuna bakın