اذهب إلى المحتوى

السؤال

نشر

لدي حقلين الأول باسم country  والثاني باسم city، وأريد أن أجعل الحقل city مطلوب required في حالة واحدة فقط وهي إذا كانت قيمة country تساوي 1 أو 2 أو 3

<select name="country">
  <option value="1">First</option>
  <option value="2">Second</option>
  <option value="3">third</option>
</select>

<input type="text" name="city" />

كيف أقوم بجعل الحقل country مطلوب إذا كانت قيمة الحقل الثاني "city" تساوي 1 أو 2 أو 3 في ملف request في Laravel؟

Recommended Posts

  • 1
نشر

إذا كانت القيم المتاحة ل country هي فقط 1 و 2 و 3 يكفي فقط جعل الحقل city مطلوبًا دومًا كالتالي: 

<input type="text" name="city" required />

أما في حال وجود خيارات أخرى يمكن تحقيق ذلك باستخدام جافاسكريبت ضمن نفس الصفحة، نسجل استماع لحدث تغيير قيمة country ونتحقق من القيمة الجديدة ونعين فيما إذا كان الحقل city مطلوبًا على أساسها كالتالي:

<script>
 document.querySelector('input[name=country]') // country اختيار العنصر 
   .addEventListener('change', function (e) { // تسجيل استماع لحدث تغيير القيمة
      const selectedCountry = e.target.value; // القيمة الجديدة
      const cityRequried = ['1', '2', '3'].some(value => value == selectedCountry); // حقل المدينة مطلوب 

      const city = document.querySelector('input[name=city]'); // حقل المدينة
   
      if (cityRequried) city.setAttribute("required","required"); // جعل الحقل مطلوبًا
      else city.removeAttribute("required"); // جعل الحقل اختياري
   })
</script>

 

  • 1
نشر

يمكنك جعل الحقل country  من نوع enum ويأخذ القيم 1 او 2 او 3 , أما الحقل city كما هو واضح من الكود الخاص بك يمكننا جعله string وفارغا أيضا فيكون الكود في ملف التهجير كالتالي

$table->enum('country',[1,2,3]);
$table->string('city')->nullable();

في ملف request يمكنك اعطاء الحقول بعض القواعد كالتالي

$request->validate([
	'country'=>['required','in:1,2,3'],
	'city'=>['required_if:country,1,2,3']
])

 

  • 0
نشر

ستقوم بعمل request ، ومن خلاله ستفحص اذا ما تم اختيار ال option الاول او الثاني 

if ($request->country == 1 || $request->country == 2) {
	$request->validate([
		'city' => ['required']
	]);
}

ممكن أيضاً تفعيل ال required attribute في input tag 

<input type="text" name="city" required/>

ولكن هذا الحل ليس منطقياً ، هناك حل اخر وبسيط جدا وهو ان تجعل الاختيار الثالث هو الاساسي والمختار بشكل طبيعي 

<option value="3" selected>third</option>

وفي حال تم اختيار option اخر تقوم بتفعيل ال validate ل city كما في المثال الذي بالاعلى

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...