في اليومين الماضيين، رأيت أصدقاء يسألون عن كيفية استخدام البرنامج النصي لتشغيل عناصر التحكم المختلفة في HTML، والآن سأقوم بتلخيص ذلك بنفسي. نظرًا لأسباب تتعلق بالمشروع، تتم كتابة العديد من البرامج بلغة VBScript، ويمكن للأصدقاء المهتمين إعادة كتابتها إلى JavaScript.
حسنًا، دعنا نصل إلى الموضوع ونقدمه الآن:
سنقدم اليوم استخدام VBScript لتحديد عدد خانات الاختيار المحددة وقيمة خانة الاختيار المحددة.
عند إنشاء قائمة، مثل قائمة الطلبات، قد يتم وضع خانة اختيار أمام كل سجل طلب لتوفير وظائف مثل حذف الدُفعة وإصدارها. بشكل عام، قيمة كل خانة اختيار هي قيمة المفتاح الأساسي للسجل المقابل، مثل رقم الطلب. عند تنفيذ وظائف مثل الحذف والتحرير، تحتاج إلى معرفة عدد خانات الاختيار المحددة والقيم التي تتوافق معها مربعات الاختيار هذه. الطريقة موضحة أدناه.
ينقسم البرنامج إلى ثلاثة أجزاء:
1. تحديد ما إذا كان CheckBox المحدد واحدًا أم أكثر.
الفكرة الرئيسية هي: عند وجود خانات اختيار متعددة بنفس الاسم ولكن بمعرفات مختلفة، على سبيل المثال، تتم تسمية عنصر التحكم في خانة الاختيار. chkTest، فسيتم استدعاؤه في شكل مصفوفة. على سبيل المثال، هناك ثلاث خانات اختيار تسمى chkTest ومعرفاتها هي chkTest1 وchkTest2 وchkTest3. يجب أن تكتب: chkTest(0).checked، chkTest(1).checked، chkTest(2).checked (يبدأ المصفوفة من الصفر)؛ عندما يكون هناك خانة اختيار واحدة فقط، يمكن استخدام chkTest.checked مباشرة. يحدد هذا أنه بالنسبة للأرقام المختلفة (واحد أو أكثر)، لا يمكن استخدام طرق مختلفة إلا للحصول على معلومات خانة الاختيار. لأنه عندما يكون هناك عناصر تحكم متعددة بنفس الاسم ومعرفات مختلفة، فإن عنصر التحكم له خاصية "اسم عنصر التحكم.نوع"، ويمكن أن تكون خاصية القراءة فقط هذه مساوية لأي سلسلة، أي اسم عنصر التحكم.نوع = " أي سلسلة" الثابت صحيح. بالطبع، هذا فقط عندما تكون هناك سمة عنصر تحكم name.type، وإلا فهي دائمًا خاطئة، بحيث يمكن تمييز ما إذا كانت خانة الاختيار في القائمة مفردة أم متعددة. الإجراء هو كما يلي:
'********************************************* ***** ***
'<اسم الوظيفة>
'gfIs_ArrayTest(obj)
'<وظيفة>
"حدد ما إذا كانت خانة الاختيار المحددة واحدة أم أكثر
'<المعلمة>
'اسم كائن CheckBox
'<قيمة الإرجاع>
' حقيقي
' خطأ شنيع
'<ملاحظات>
' تم الإنشاء في 15 مارس 2004 بواسطة AITD
'***************************************************************************************************************************************************************************
الدالة gfIs_ArrayTest(obj)
على خطأ استئناف المقبل
إذا obj.type = "العلم" ثم
gfIs_ArrayTest = True
آخر
gfIs_ArrayTest = خطأ
نهاية إذا
وظيفة النهاية
2. تحقق مما إذا كان تحديد خانات الاختيار على الشاشة يلبي المتطلبات،
ويعني ما يسمى بالامتثال، على سبيل المثال، عند الحذف، حدد سجلًا واحدًا على الأقل، عند التصحيح، حدد سجلًا واحدًا فقط أخرى، ما يمكن تحديده هو 5 عناصر فقط، ويمكن تحديد 10 عناصر فقط، وما إلى ذلك. فقط قم بتغيير الإجراء التالي إلى ما يلي. لا تنس ما قلته للتو، هناك طرق مختلفة للتعامل مع مربع اختيار واحد فقط ومربعات اختيار متعددة.
'********************************************************************************************************************************************************************************* * ****
'<اسم الوظيفة>
' gfChkCheckbox()
'<وظيفة>
'تحقق مما إذا كان تحديد Screen CheckBox يلبي المتطلبات
'<المعلمة>
'obj: التحكم في خانة الاختيار المقابلة
'علم: التحقق من القواعد: يمكن أن يكون للرقم 0 عدة اختيارات
1 يمكن اختيار واحد فقط
' الاسم: يطالب المستخدم بمعلومات حول عنصر التحكم الذي أبلغ عن خطأ
'<قيمة الإرجاع>
' حقيقي
' خطأ شنيع
'<ملاحظات>
' تم الإنشاء في 15 مارس 2004 بواسطة AITD
'********************************************************************************************************************************************************************************* * ****
وظيفة gfChkCheckbox(obj,علم,اسم)
خافت ط
ي
gfChkCheckbox = false
ط = 0
ي = 0
'إذا كان الكائن غير موجود
إذا كان فارغًا (obj) إذن
msgbox "يرجى تحديد " + اسم + "." "يرجى تحديد كائن."
gfChkCheckbox = false
وظيفة الخروج
نهاية إذا
"هناك كائن واحد فقط."
إذا لم يكن gfIs_ArrayTest(obj) إذن
إذا كان obj.checked = خطأ
msgbox "يرجى تحديد " + اسم + "." "يرجى تحديد كائن."
gfChkCheckbox = false
وظيفة الخروج
آخر
gfChkCheckbox = true
وظيفة الخروج
نهاية إذا
end if
'في حالة وجود كائنات متعددة
لـ i = 0 إلى (obj.length - 1)
إذا كان obj(i).type = "مربع اختيار" إذن
إذا كان obj(i).checked = صحيحًا إذن
ي=ي+1
نهاية إذا
نهاية إذا
التالي
إذا كان ي = 0 ثم
msgbox "يرجى التحديد" + الاسم + "." "يرجى تحديد كائن."
gfChkCheckbox = false
وظيفة الخروج
نهاية إذا
إذا ي = 1 ثم
gfChkCheckbox = true
وظيفة الخروج
نهاية إذا
إذا ي > 1 ثم
إذا العلم = 1 ثم
msgbox "يمكن تحديد " + اسم + " واحد فقط." "يمكن تحديد كائن واحد فقط."
gfChkCheckbox = false
وظيفة الخروج
آخر
gfChkCheckbox = true
وظيفة الخروج
نهاية إذا
وظيفة
end if
end3. الحصول على
قيمة
خانة الاختيار لتسهيل المعالجة اللاحقة، غالبًا ما يتم حفظ المعلومات المهمة في سمة القيمة الخاصة بمربع الاختيار للوصول إليها لاحقًا.يقوم البرنامج التالي بربط قيمة خانة الاختيار المحددة في سلسلة باستخدام الفاصل "^|^" ثم يقوم بإعادتها.
'***************************************************************************************************************************************************************************
'<اسم الوظيفة>
'gfGetCheckBoxValue(obj)
'<وظيفة>
"احصل على قيمة CheckBox المحدد
'<المعلمة>
'اسم كائن CheckBox
'<قيمة الإرجاع>
'قيمة خانة الاختيار المحددة
'<ملاحظات>
' تم الإنشاء في 15 مارس 2004 بواسطة AITD
'***************************************************************************************************************************************************************************
الدالة gfGetCheckBoxValue(obj)
خافتة strValue
خافت intCounter
خافت و
strValue = ""
intCounter = 0
'إذا كان الكائن غير موجود
إذا كان فارغًا (obj) إذن
gfGetCheckBoxValue = strValue
وظيفة الخروج
ينتهي إذا
"إذا كان الكائن هو."
إذا لم يكن gfIs_ArrayTest(obj) إذن
إذا كان obj.checked = خطأ
gfGetCheckBoxValue = strValue
وظيفة الخروج
آخر
gfGetCheckBoxValue = obj.value
وظيفة الخروج
نهاية إذا
ينتهي إذا
"إذا كان الكائن متعددًا."
لأني = 0 إلى obj.length - 1
إذا كان obj(i).checked = صحيحًا إذن
إذا كان intCounter> 0 ثم
strValue = strValue & "^|^" & CStr(obj(i).value)
آخر
strValue = CStr(obj(i).value)
نهاية إذا
intCounter = intCounter + 1
نهاية إذا
التالي
gfGetCheckBoxValue = strValue
الدالة النهائية
هي طريقة معالجة خانات الاختيار في VBScript (تُستخدم أحيانًا). يمكن تغليف هذه الوظائف في ملف vbs شائع والإشارة إليها في منطقة علامة <head> في html لجعلها عالمية ~ مثل <head><script language=vbscript src=vbsChkBoxTool.vbs></script> </ head>
لاحظ أيضًا أنه في التطبيقات الفعلية، قد لا يكون هناك سجل واحد في القائمة تم إنشاؤه بناءً على شروط الاستعلام، أي أنه لا يوجد تحكم في خانة الاختيار إذا كان عنصر التحكم بهذا الاسم لا يزال يسمى IE سيتم الإبلاغ عن خطأ. لم يكن هناك حل جيد، لذلك كتبت برنامجًا لتجاوز هذا الموقف دون التحكم في خانة الاختيار:
الوظيفة sIsChkBoxExist()
على خطأ استئناف المقبل
خطأ. واضح
إذا كان فارغًا (document.frmOrderList.chkOrder) إذن
نهاية إذا
إذا كان err.number <> 0 ثم
آخر
sIsChkBoxExist=true
نهاية إذا
خطأ. واضح
الوظيفة النهائية
، قم بإجراء أي عملية على عنصر التحكم المحدد مسبقًا، مثل isEmpty. إذا تم التقاط err.number>0، فهذا يعني أن عنصر التحكم غير موجود. ومع ذلك، نظرًا لوجود خطأ في الاستئناف بعد ذلك، فلن يحدث أي خطأ هذا أيضًا يحدد ما إذا كان عنصر التحكم موجودًا.
في كل مرة قبل استدعاء الوظائف الثلاث المذكورة أعلاه، قم باستدعاء وظيفة sIsChkBoxExist مرة واحدة لمعرفة ما إذا كان عنصر التحكم المقابل موجودًا، حتى لا تكون هناك أخطاء.