محاولة تحميل ملف غير موجود في Internet Explorer، لم يتم تقديم النموذج

StackOverflow https://stackoverflow.com/questions/691323

سؤال

لدي نموذج مع input type=file.يتيح Internet Explorer للمستخدم كتابة أي شيء يريده في هذا الإدخال (بينما يقوم Firefox بإحضار منتقي الملفات).إذا قام المستخدم بإدخال اسم غير صالح بشكل صارخ، على سبيل المثال:

a

ويحاول إرسال النموذج، ولا يحاول Internet Explorer حتى إرسال النموذج.

هل هناك أي طريقة يمكنني من خلالها معرفة حدوث ذلك وإعلام المستخدم بحدوث ذلك من خلال تنبيه؟

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

المحلول 2

لقد وجدت طريقة أفضل للقيام بذلك:http://www.priddypictures.co.uk/reference/fileInputProblem.htm

لذلك، إذا كان هؤلاء الرجال/البنات على حق، وتم إرسال النموذج بشكل جيد إذا لم يكن للإدخال سمة اسم، فعندئذٍ:

  • اكتب مكونًا إضافيًا لـ jQuery والذي سيؤدي (إذا كان Internet Explorer) إلى إزالة سمة الاسم من جميع مدخلات الملف
  • أدخل إدخالًا مخفيًا آخر في النموذج بالاسم الصحيح
  • انسخ القيمة من إدخال الملف إلى الإدخال المخفي

قد أكتب هذا البرنامج المساعد في مرحلة ما.

نصائح أخرى

ويجب عليك إضافة زر "عند _ النقر ()" الحدث لتقديم مما يستدعي وظيفة جافا سكريبت الذي يختبر لحالتك ويستخدم جافا سكريبت "حالة تأهب" للسماح للمستخدم يعرفون أنهم بحاجة إلى إدخال شيء يستحق تقديم.

وانظر إلى التعبير العادية للاختبارات الخاصة بك.

إذا كنت تريد للمستخدم لاتخاذ قرار، واستخدام confirm().

إذا كنت تريد ببساطة تنبيههم وليس اختبار قيمتها، يمكنك استخدام شيء مثل:

<input type="submit" value="clickme" onClick="if (confirm('Really submit?')) { this.form.submit(); }">

إليك بعض التعليمات البرمجية التي سوف تحصل على القيمة من استدعاء دالة جافا سكريبت داخل onclick():

<html>
    <head>
        <title>hello world</title>
        <SCRIPT LANGUAGE="javascript" type="text/javascript">
            function show_me(form_elem) {
            alert(form_elem.value);
            }
        </script>
    </head>
    <body>
        <form method="GET" name="upload_form" action="index.html" target="_top">
            <input type="file" name="file_name" size="14" maxlength="256" value="">
            <br>
            <input type="submit" value="mybutton" onclick="show_me(this.form.file_name)" />
        </form>
    </body>
</html>

هل يمكن تقليد سلوك فايرفوكس بما يلي:

<input type="file" name="test" onkeypress="this.click();return false;">

وعندما يحاول المستخدم لكتابة في ملف الإدخال، فإنه ينبثق منتقي الملف.

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

ويظهر للعمل حسنا في IE 6 و 7 و 8.

وأنه يعمل على ما يرام في فايرفوكس 3 (نظرا لأنه لا يسمح الكتابة في <input type=file>).

وأنه يعمل على ما يرام في رحلات السفاري ويندوز 3 و 4 (نظرا لأنه لا يسمح بكتابة في <input type=file>).

في أوبرا 9 (الذي يسمح الكتابة في <input type=file>) أنها لا تفعل أي شيء (لا يطفو على السطح المختار أو ابتلاع الضغط على المفاتيح). لا يبدو هذا الحدث onkeypress لاطلاق النار على كل الواقع، وربما للأمن.

في فايرفوكس 2 أنها لا تعمل (الذي يسمح الكتابة في <input type=file>) لthis.click() لا يطفو على السطح مختار وreturn false يبتلع الضغط على المفاتيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top