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

كيفية عمل النماذج الديناميكية في لغة جافاسكريبت

احلام الخطيب

السؤال

كيف يمكنني بالجافا سكربت عند الضغط ع الزر اضافة سطر جديد من حقول الإدخال ع سطر واحد وحذف الزر القديم (كما هو موضح بالصورة)

وايضا عند الضغط مرة أخرى يفعل ذات الشئ وهكذا...

Screenshot 2022-11-18 153121.png

Screenshot 2022-11-18 153040.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

نستخدم حقول النموذج الديناميكي في العديد من السيناريوهات ، مثل إنشاء قائمة مهام أو أي نموذج آخر قد يحتوي على حقل واحد أو أكثر من الحقول المطلوبة.

  • بناء هيكل HTML ضروري ، نبدأ من بنية HTML لحقول النموذج الديناميكي الخاصة بنا.

    <h1>الحقول الديناميكية</h1>
      <div class="wrapper">
        <div id="survey_options">
          <input type="text" name="survey_options[]" class="survey_options" size="50" placeholder="Name">
          <input type="text" name="survey_options[]" class="survey_options" size="50" placeholder="Email">
          <input type="text" name="survey_options[]" class="survey_options" size="50" placeholder="Another Field">
        </div>
        <div class="controls">
          <a href="#" id="add_more_fields"><i class="fa fa-plus"></i>إضافة</a>
          <a href="#" id="remove_fields"><i class="fa fa-plus"></i>حذف</a>
        </div>
      </div>

     

  • لقد قمت بتضمين ثلاثة حقول فقط ، اثنان منهم (الاسم والبريد الإلكتروني) ثابتان وأنا أجعل الحقل الأخير حقل آخر ديناميكيًا ، حيث سنقوم بتنفيذ الإجراءات. يبدو قبيح جدا. أليس كذلك؟ لنقم ببعض تصميمات CSS لجعلها جذابة.

    @import url('https://fonts.googleapis.com/css2?family=Jost:wght@100;300;400;700&display=swap');
    
    body {
      background-color: #f0f5ff;
      font-family: 'Jost',sans-serif;
      color: #fff;
    }
    
    .wrapper {
      width: 400px;
      margin: 40px auto;
      padding: 10px;
      border-radius: 5px;
      background: white;
      box-shadow: 0px 10px 40px 0px rgba(47,47,47,.1);
    }
    
    input[type="text"]{
      padding: 10px;
      margin: 10px auto;
      display: block;
      border-radius: 5px;
      border: 1px solid lightgrey;
      background: none;
      width: 274px;
      color: black;
    }
    
    input[type="text"]:focus {
      outline: none;
    }
    
    .controls {
      width: 294px;
      margin: 15px auto;
    }
    
    #remove_fields {
      float: right;
    }
    .controls a i.fa-minus {
      margin-right: 5px;
    }
    
    a {
      color: black;
      text-decoration: none;
    }
    
    h1 {
      text-align: center;
      font-size: 48px;
      color: #232c3d;
    }

     

  • ما الذي يجعل النموذج تفاعليًا؟ بالتأكيد ، جافا سكريبت.

    var survey_options = document.getElementById('survey_options');
    var add_more_fields = document.getElementById('add_more_fields');
    var remove_fields = document.getElementById('remove_fields');
    
    add_more_fields.onclick = function(){
      var newField = document.createElement('input');
      newField.setAttribute('type','text');
      newField.setAttribute('name','survey_options[]');
      newField.setAttribute('class','survey_options');
      newField.setAttribute('siz',50);
      newField.setAttribute('placeholder','Another Field');
      survey_options.appendChild(newField);
    }
    
    remove_fields.onclick = function(){
      var input_tags = survey_options.getElementsByTagName('input');
      if(input_tags.length > 2) {
        survey_options.removeChild(input_tags[(input_tags.length) - 1]);
      }
    }
    
      document.getElementById('print-values-btn').onclick = function() {
          let allTextBoxes = document.getElementsByName('survey_options[]');  
          for(let i of allTextBoxes){
              console.log(i.value) // هنا ستتمكن من رؤية جميع القيم في  console
          }
      }

    شرح الكود 

    في الأسطر الثلاثة الأولى ، لدي الحقل الذي سيكون ديناميكيًا وزر عناصر التحكم (إضافة وإزالة) لأداء أحداث onclick.

    أقوم الآن بإنشاء عنصر إدخال جديد كلما تم تنفيذ حدث النقر على add_more_fields. في الواقع ، يقوم بإنشاء عناصر إدخال وإضافة سمات إليها مثل النوع والاسم والفئة وما إلى ذلك.

    نحتاج أيضًا إلى الإزالة أيضًا.

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

    إذا كان لدينا أكثر من مجالين. ثم ببساطة استخدم وظيفة JS removeChild واجتياز رقم الفهرس الخاص بـ Survey_options.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 13 ساعات قال منار النقري:

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

يمكنك تجربة الكود أعلاه فهو يعمل بشكل جيد . كما يمكنك تعديله حسب متطلبات مشروعك .

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...