ASP.Net مخصص التحقق من جانب العميل
-
08-06-2019 - |
سؤال
لدي التحقق من صحة مخصصة وظيفة في جافا سكريبت في السيطرة على .Net 2.0 موقع ويب الذي يتحقق أن نرى أن الرسوم المدفوعة لا يتجاوز مبلغ الرسوم المستحقة.
لقد وضعت مدقق رمز في ascx
الملف وأنا أيضا حاولت استخدام Page.ClientScript.RegisterClientScriptBlock()
و في كلتا الحالتين التحقق الحرائق, ولكن لا يمكن العثور على وظيفة جافا سكريبت.
الإخراج في فايرفوكس خطأ وحدة "feeAmountCheck is not defined"
.هنا هي وظيفة (هذه كانت مأخوذة مباشرة من فايرفوكس->عرض المصدر)
<script type="text/javascript">
function feeAmountCheck(source, arguments)
{
var amountDue = document.getElementById('ctl00_footerContentHolder_Fees1_FeeDue');
var amountPaid = document.getElementById('ctl00_footerContentHolder_Fees1_FeePaid');
if (amountDue.value > 0 && amountDue >= amountPaid)
{
arguments.IsValid = true;
}
else
{
arguments.IsValid = false;
}
return arguments;
}
</script>
أي الأفكار لماذا وظيفة لم يتم العثور عليها ؟ كيف يمكن علاج هذا دون الحاجة لإضافة وظيفة إلى الصفحة الرئيسية أو المستهلكة الصفحة ؟
المحلول
حاول تغيير الحجة أسماء sender
و args
.و بعد الانتهاء من العمل, مفتاح الاتصال على ScriptManager.RegisterClientScriptBlock
, بغض النظر عن استخدام اياكس.
نصائح أخرى
عندما كنت تستخدم .Net 2.0 و اياكس - يجب استخدام:
ScriptManager.RegisterClientScriptBlock
وسوف تعمل على نحو أفضل في اياكس البيئات ثم الصفحة القديمة.ClientScript الإصدار
أيضا يمكن استخدام:
var amountDue = document.getElementById('<%=YourControlName.ClientID%>');
التي سوف تحل تلقائيا العميل معرف العنصر دون الحاجة إلى معرفة أن هذا يسمى 'ctl00_footerContentHolder_Fees1_FeeDue'
.
بينما أنا لا تزال ترغب في إجابة لماذا جافا سكريبت لم يكن معترف به ، فإن الحل وجدت في هذه الأثناء (وما ينبغي القيام به في المقام الأول) هو استخدام Asp:CompareValidator
بدلا من Asp:CustomValidator
.