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

كيفية الحصول على كل المدخلات في إستمارة Form بإستعمال jQuery؟

Emad Saif

السؤال

لدي إستمارة تحتوي على الكثير من المدخلات (أكثر من 10 مدخلات)، وأريد الحصول على كل البيانات في هذه الإستمارة لإرسالها عبر Ajax:

<form>
    <input type="radio" name="active" value="1" checked="checked" />
    <input type="radio" name="active" value="0" />
    <input name="title" type="text" />
    <input name="subtitle" type="text" />
  	....
</form>

هل توجد طريقة للحصول على كل البيانات دفعة واحدة بدلًا من تحديد كل عنصر على حدى والحصول على القيمة المدخله فيه value يدويًا؟ بحيث يكون شكل البيانات في النهاية كالتالي:

{
    "active": "1",
    "title": "some text",
    "subtitle": "Hello, World!"
  ...
}

 

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

Recommended Posts

  • 1

يمكنك استعمال التابع serializeArray لتحليل كامل المدخلات واعدادها في مصفوفة كائنات.

<form>
    <input type="radio" name="active" value="1" checked="checked" />
    <input type="radio" name="active" value="0" />
    <input name="title" type="text" />
    <input name="subtitle" type="text" />
</form>

<button onclick="getData()">
get data
</button>

شيفرة الجافاسكربت:

function getData(){
    var data = $('form').serializeArray();
    
    console.log(data)
}

الناتج:

[{
    name: "active",
    value: "1"
}, {
    name: "title",
    value: "TITLE VALUE"
}, {
    name: "subtitle",
    value: "SUBTITLE VALUE"
}]

يمكنك انشاء ازواج key-value انطلاقا من قيمة واسم كل حقل عن طريق المرور حول كل كائن من المصفوفة من الناتج. يكون المنطق العملية مشابها لـ:

function getData(){
    var data = {};
    var dataArray = $('form').serializeArray();
  
    for(var i=0; i < dataArray.length ; i++){
      data[dataArray[i].name] = dataArray[i].value;
    }
    
    console.log(data)
}

الناتج:

{
  active: "1",
  subtitle: "SUBTITLE VALUE",
  title: "TITLE VALUE"
}
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

يمكنك ذلك لحظة عمل submit لل form طالما أن الحقول المطلوب الحصول على بياناتها داخل وسم الفورم وكما يلي في المثال:

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
  var formData={} // نعرف كائن نخزن فيه البيانات 
  $("form").submit(function(e){ //نقوم بالتنصت على النموذج 
    e.preventDefault(); // هنا نمنع الإجراء الإفتراضي للعنصر وهو إرسال محتويات النموذج مباشرة حتى نتمكن من إرسال البيانات عبر أيجاكس
    var x = $("form").serializeArray(); // من خلال هذه الدالة نحول البيانات الى صيغة مصفوفة تحتوي على كائنات فيها قيمة إسم الحقل والقيمة المسندة له
    $.each(x, function(i, field) { // نمر على  عناصر المصفوفة المستخرجة أعلاه 
        formData[field.name]=field.value // نخزن البيانات في الكائن مسبق التعريف
    });
    
    console.log("formData", formData) // => {FirstName: 'Mickey', LastName: 'Mouse'}
    //  هنا يمكنك التعامل مع البيانات والتعديل عليها قبل إرسالها الى الخادم مثلا
    // إستدعاء ajax هنا
    // Ajax comes here..
   })
});
</script>
</head>
<body>
  <form action="">
    First name: <input type="text" name="FirstName" value="Mickey"><br>
    Last name: <input type="text" name="LastName" value="Mouse"><br>
    <input type="submit" value="Submit">
  </form> 
</body>
</html>
	
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...