سؤال

لدي صفحة ويب C # ASP.NET مع نموذج تحميل ملف XML. عندما ينقر المستخدم "تحميل"، فإن تنبيه JavaScript تأكيد سوف ينبثق يسأل المستخدم، "هل هذا الملف صحيح؟". سيتم تنشيط تأكيد تأكيد فقط إذا كان اسم الملف لا يحتوي على قيمة من أحد حقول النماذج الأخرى.

ما هي أفضل طريقة للجمع بين استخدام نموذج C # ASP.NET و JavaScript تأكيد تنبيه يتم تنشيطه إذا كان اسم الملف الذي يتم تحميله لا يفي بمعايير معينة؟

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

المحلول

أفترض أنك تقوم بوضع قيمة سلسلة صالحة في حقل مخفي (لم تكن مذكورة). ينفذ OnClientClick زر تحميل:

<asp:button .... OnClientClick="return confirmFileName();"/>

<script type="text/javascript">
function confirmFileName()
{
    var f = $("#<%= file1.ClientID %>").val();
    var s=$("#<%= hidden1.ClientID %>").attr("value");
    if (f.indexOf(s) == -1) {
        if (!confirm("Is this correct file?")) {
            $("#<%=file1.ClientID %>").focus();
            return false;
        }
     }
    return true;
}
</script>

تحرير: - فيما يتعلق <%= file1.ClientID %>.

سيتم استبدال ذلك بالمعرف الجانبي العميل للتحكم في تحميل الملف ctl00$ctl00$cphContentPanel$file1. وبعد يضع البرنامج النصي على المنشطات فيما يتعلق باستخدام شيء مثل $("input[id$='file1']"). وبعد لمزيد من المعلومات، يرجى الاطلاع ديف أجنحة.

نصائح أخرى

ليس هناك الكثير الذي تحتاج إلى القيام به مع C # لهذه الصفحة، يبدو أنه يبدو أن معظم هذا سيتم القيام به على جانب العميل.

أضف عنصر التحكم Fileupload وزر إلى نموذج .aspx الخاص بك. قم بتعيين الخاصية OnClientClick في الزر إلى شيء مثل

OnClientClick = "return myFunction()"

ثم اكتب وظيفة جافا سكريبت مثل:

function myFunction()
{
   // Check other text values here

   if (needToConfirm){
      return confirm('Are you sure you want to upload?');
   }
   else return true;
}

تأكد من إرجاع "MyFunction ()" False إذا كنت ترغب في إلغاء عملية إعادة النشر (أي النقر فوق المستخدم "لا" في مربع الحوار "تأكيف"). سيؤدي ذلك إلى إلغاء عملية إعادة النشر إذا فازت "لا".

window.onload = function() {
  document.forms[0].onsubmit = function() {
    var el = document.getElementById("FileUpload1");
    var fileName = el.value;

    if(fileName.indexOf("WHATEVER_VALUE") == -1) {
      if(!confirm("Is the file correct?")) {
        el.focus();
        return false;
      }
    }

    return true;
  }
}

كان لدي مشاكل في تنفيذ هذا النوع من الأشياء للعمل في كل من IE و Firefox بسبب الطريقة التي تعمل بها الأحداث في تلك المتصفحات. عندما وصلت إلى العمل في أحدهم، فإن الآخر لا يزال يتسبب في إعادة النشر حتى لو ألغيت ذلك.

إليك ما لدينا في الكود الخاص بنا (تم سرق اختبار المتصفح من مكان آخر).

if (!window.confirm("Are you sure?"))
{
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
        window.event.returnValue = false;
    else
        e.preventDefault();
}

بالإضافة إلى استخدام التحقق من صحة الجانب العميل، يجب عليك أيضا إضافة CustomValidator لتوفير التحقق من الصحة على جانب الخادم. لا يمكنك الوثوق في أن المستخدم يحتوي على JavaScript قيد التشغيل، أو أن المستخدم لم يتم تجاوز الشيكات JavaScript.

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