الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود للتحقق من قيم الفورم ، ولكن به مشكلة

مغلق
بدأه أبو محمد اللحياني في 21 نوفمبر 2007 · 1 رد · 943 مشاهدة · في قسم البرمجة بــ Javascript
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

الحمد لله أولاً وآخراً

لقد اجتهدت تجميع كود - طبعاً نسخ ولصق من النت - للتحقق من قيم الفورم ، حتى لا أرسل قيم فارغة للحقول المطلوبة والواجب على المستخدم أن كتابة قيمها .

لنفترض أن الفورم كالتالي :

<form id="dopost" method="post" name="dopost" action="index.php">
<div id="fieldarea">
<label id="labelfilename" for="filename">اسم الملف</label>
<input required="1" name="filename" id="filename" size="30" value="" type="text">
<br>
</div>
<div id="fieldarea">
<label id="labelsource" for="source">المصدر</label>
<input required="0" name="source" id="source" size="30" value="" type="text">
<br>
</div>
<div align="center">
<button id="submit" name="submit" type="button" class=".btn" onclick="formCheck('myform');">موافق</button>
<button id="reset" name="reset" type="reset">إعادة</button>
</div>
</form>

طبعاً هذا الفورم به أكواد كثيرة وملخبطة ولكن الذي يهمنا هو الصفة -- required="1" -- لكل input ،

ولذلك لأجل فحص القيمة لكل input توجد به صفة required="1"

ثم استخدم الكود التالي:

//------------------------------------------------------------------
function e(id) {
	if (!id) { return null; }
	var returnObj = document.getElementById(id);
	if (!returnObj && document.all) {
		returnObj = document.all[id];
	}
	return returnObj;
}
//------------------------------------------------------------------
function formCheck(formid){
var formData = Form.serialize(formid);
	var elments = formData.split('&');
	var alertMsg = "Please complete the following fields:\n";
	var lengthMsg = alertMsg.length;

	for (var i = 0; i < elments.length; i++){
		var elm = elments.split('=');
		var isRequired = e(elm[0]).attributes['required']? true: false;
		if (elm[1] == '' && isRequired) {
			var labelField = e('label'+elm[0]).innerHTML;			
			alertMsg += labelField+' : ......\n';
		}
	}

	if (alertMsg.length == lengthMsg){return true;}
	else{ alert(alertMsg); return false;}
}
//------------------------------------------------------------------

والمشكلة بهذا الكود هي أن الفايرفوكس عندما يصل للسطر [[ var isRequired = e(elm[0]).attributes['required']? true: false; ]]

وعندما لا يكون الصفة موجودة أصلاً فإنه يعطي خطأ ولا يكمل .

والمطلوب كيف أمنع حصول هذا الخطأ سواء كانت الصفة موجودة أو لاً ؟؟

وجزاكم الله خيراً

تم تعديل هذه المشاركة بواسطة أبو محمد اللحياني في 21 نوفمبر 2007 في 04:31

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#2

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

لقد وجدت الحل

		try {
			var isRequired = e(elm[0]).attributes['required']? true: false;
		} catch (e) {
			var isRequired = false;
		}

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

هذا الموضوع مغلق.

مواضيع مشابهة