السلام عليكم ورحمة الله وبركاته
الحمد لله أولاً وآخراً
لقد اجتهدت تجميع كود - طبعاً نسخ ولصق من النت - للتحقق من قيم الفورم ، حتى لا أرسل قيم فارغة للحقول المطلوبة والواجب على المستخدم أن كتابة قيمها .
لنفترض أن الفورم كالتالي :
<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; ]]
وعندما لا يكون الصفة موجودة أصلاً فإنه يعطي خطأ ولا يكمل .
والمطلوب كيف أمنع حصول هذا الخطأ سواء كانت الصفة موجودة أو لاً ؟؟
وجزاكم الله خيراً