سؤال

إذا انقر المستخدم على أكثر من مرة على زر إرسال من النموذج ، فإنه يرسل بشكل أساسي طلبات الحصول على/نشر متعددة (اعتمادًا على النموذج المسبق).

أجد أن تعطيل زر الإرسال باستخدام JS يمثل مشكلة بعض الشيء ، لأنه إذا حاول المستخدم التوقف (زر ESC/STOP) ، فإنه لا يعيد ضبط الزر (إلا إذا قمت بالتقاط ذلك ومعالجة ذلك باستخدام JS) ، إذا كان يعود المستخدم (زر العودة) من الصفحة التالية ، لا يزال زر الإرسال معطل (على الأقل في Firefox).

ما هي أفضل الممارسات لتعطيل وضع العديد من النماذج.

شكرًا!

هل كانت مفيدة؟

المحلول

JavaScript يعمل بشكل جيد بالنسبة لي. التأكد من تمكين الزر (الأزرار) عندما يقوم المستخدم بإحباط تقديمه جزءًا من قابلية الاستخدام.

إذا كنت لا ترغب في تعطيل الأزرار الخاصة بك باستخدام JavaScript ، فربما في الخادمات ، يمكنك التقاط رسائل مكررة في فترات زمنية معينة؟

نصائح أخرى

قد لا يجيب هذا على سؤالك ، لكنني أعتقد أن إنشاء شيء uniq لتحديد الطلب على جانب الخادم قد يكون فكرة أفضل. التحقق من صحة جانب العميل هو دائما مشكلة.

قم بربط التعطيل على إرسال النموذج ثم تعطيله إلى تحميل الصفحة (لإعادة التعيين عند التحديث / العودة):

function disableSubmits( domNode, toDisable )
{
    domNode = domNode || document.getElementsByTagName( 'body' )[ 0 ];

    toDisable = !!toDisable;

    for( var i = 0; i < inputs.length; ++i )
    {
        if( 'submit' === inputs[i].getAttribute( 'type' ) )
        {
            inputs[i].disabled = toDisable;
        }
    }
}

var onloadhandler = function( )
{
    var theForm = document.getElementById( 'theForm' );

    theForm.onsubmit = function( ){ disableSubmits( theForm, true ); }

    disableSubmits( theForm, false );
};

var old = window.onload;

window.onload =  'function' === typeof old
                 ? function( ){ old(); onloadhandler(); }
                 : onloadhandler;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top