# التحقق من الإدخال

## ☑️ ما هو التحقق من الإدخال؟

بجانب التحقق مما إذا تم إدخال قيمة في حقل، يمكنك أيضًا إعداد قواعد متقدمة باستخدام التعابير النمطية للتأكد من أن النص الذي أدخله المستجيب يطابق شروطًا معينة.

يمكنك أيضًا تعيين **الحد الأقصى لطول الأحرف** المسموح بإدخالها في الحقل الخاص بك.

![](https://848173432-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8fLhS0bmfBRyq0HdUm%2F-MBxJW6_rwxooZXjfBZJ%2F-MBxSXjb6_rt4xDgQCuU%2Fimage.png?alt=media\&token=8c2583e9-c6bb-412f-9f33-ff2e50b049b9)

{% hint style="info" %}
يمكن للمستخدمين المتقدمين أيضًا إنشاء حقل مخصص قائم [نوع الإجابة](https://docs.ngsurvey.com/ar/form-management/form-designer/answers/answer-types/creating-new-type) باستخدام  [التحقق المخصص بجافاسكربت](https://docs.ngsurvey.com/ar/form-management/form-designer/answers/answer-types/creating-new-type/custom-validation-code) للتحقق من إدخالات المستجيب.
{% endhint %}

## 🔢 التعابير النمطية

مُ [التعبير النمطي](https://en.wikipedia.org/wiki/Regular_expression) (regex) هو نمط بحث نصي سيُتحقق مما إذا كان النص الذي أدخله المستجيب يطابق نمط التعبير أم لا.&#x20;

![](https://848173432-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8fLhS0bmfBRyq0HdUm%2F-MBhEHQX1dJgLFMgYGxh%2F-MBhF_WSjl4w9Zy_E3R9%2Fimage.png?alt=media\&token=0717f3d7-23b5-428d-8ee6-d83a28f3a34c)

باستخدام هذه الأنماط يمكنك التحقق من قيمة باستخدام أنماط مثل البريد الإلكتروني، الأرقام، رموز البريد وغيرها... تقريبًا أي [حقل](https://docs.ngsurvey.com/ar/form-management/form-designer/answers/answer-types/entry-field) قائم النوع يمكن التحقق من صحته مقابل تعبير نمطي يتم إنشاؤه باستخدام محرر التعابير النمطية.

## ➕ إضافة تعابير نمطية

لإضافة تعبير نمطي انتقل إلى [خصائص الإجابة](https://docs.ngsurvey.com/ar/form-management/form-designer/answers/answer-properties) الصفحة واضغط على **+** الأيقونة

![](https://848173432-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8fLhS0bmfBRyq0HdUm%2F-MBxlrzsAiMipW8XigrE%2F-MBxmVt6uM9ItWMtBWkC%2Fimage.png?alt=media\&token=fe1c1c57-6254-48b7-a217-05d420ddf338)

{% hint style="info" %}
التعابير النمطية متاحة فقط للمستخدم الذي أنشأها. إذا رغبت في مشاركة التعبير النمطي مع جميع مستخدمي ngSurvey الآخرين يمكنك تفعيل خاصيته **مضمنة** .
{% endhint %}

## 🔅 خصائص التعبير النمطي

* **`الاسم`** هو الاسم الظاهر للتعبير النمطي.
* **`التعبير النمطي`** هو نمط التعبير النمطي الفعلي الذي سيُستخدم لمطابقة إجابة المستجيب.
* **`رسالة الخطأ`** رسالة الخطأ التي ستظهر للمستجيب إذا لم تطابق إدخاله النمط.
* **`مضمن`** تسمح لنا بمشاركة التعبير النمطي مع جميع المستخدمين الآخرين.

{% hint style="info" %}
قد تجد تعابير نمطية جاهزة وتختبر تعابيرك في  <https://regex101.com/>
{% endhint %}

## 🔢 جافاسكربت

لإجابات القائم على الحقل يمكنك تعيين تحقق جافاسكربت وخصيصة رسالة التحقق على [خصائص الإجابة](https://docs.ngsurvey.com/ar/form-management/form-designer/answers/answer-properties/field-properties) لاستخدام كود جافاسكربت مخصص للتحقق من إجابتك.\
\
في الكود أدناه سيتم استبدال respondentAnswerValue بالقيمة الفعلية للحقل. إذا عاد الكود بقيمة false سيمنع ngSurvey الإرسال أو التنقل ويعرض رسالة التحقق.

```
return (respondentAnswerValue >= 18 && respondentAnswerValue <= 99);
```

في الكود أدناه نستخدم getAnswer في سياق التحقق للحصول على قيمة من إجابة أخرى في الاستبيان. هنا نبحث عن إجابة لها reporting alias مضبوط إلى "hh\_people".&#x20;

<pre><code><a data-footnote-ref href="#user-content-fn-1">re</a>turn (respondentAnswerValue &#x3C;= validationContext.getAnswer('hh_people'));
</code></pre>

سياق التحقق يدعم الأساليب والخصائص التالية

```typescript
export class ValidationContext {
   answer:Answer, // الإجابة الحالية التي يتم التحقق منها
   question:Question, // السؤال الحالي للإجابة التي يتم التحقق منها
   questions:Question[], // جميع أسئلة الاستبيان
   answers: Answer[];  // جميع إجابات الاستبيان

  public getAnswer(id: string): string // الحصول على قيمة إجابة بالبحث عن reporting alias أو المعرف الخاص بها
  public isSelectedAnswer(id: string, value: string): boolean // البحث عن سؤال بناءً على id أو reporting alias والتحقق ما إذا كانت القيمة المعطاة مختارة 
}

```

[^1]:
