জমা দেওয়ার আগে ফর্মটিতে অতিরিক্ত ক্ষেত্রগুলি কীভাবে যুক্ত করবেন?


111

পোষ্ট ব্যবহার করে এইচটিটিপি ফর্ম থেকে পাঠানোর জন্য কিছু অতিরিক্ত ক্ষেত্র যুক্ত করার জন্য জাভাস্ক্রিপ্ট এবং জিকুয়ারি ব্যবহার করার কোনও উপায় আছে কি?

আমি বোঝাতে চাই:

<form action="somewhere" method="POST" id="form">
  <input type="submit" name="submit" value="Send" />
</form>

<script type="text/javascript">
  $("#form").submit( function(eventObj) {
    // I want to add a field "field" with value "value" here
    // to the POST data

    return true;
  });
</script>

উত্তর:


161

হ্যাঁ.আপনি কিছু গোপন প্যারাম দিয়ে চেষ্টা করতে পারেন।

  $("#form").submit( function(eventObj) {
      $("<input />").attr("type", "hidden")
          .attr("name", "something")
          .attr("value", "something")
          .appendTo("#form");
      return true;
  });

30
.appendTo(this)সম্ভবত আরও ভাল হবে।
jcuenod

4
@ জ্যাকুইনড আসলটি appendTo('#form')আরও ভাল, কারণ এই জাতীয় পদ্ধতির মাধ্যমে এগুলির মানগুলির সাথে অন্য কোনও ফর্ম জমা দিতে দেয়।
Andremoniy

7
প্রতিটি জমা দিয়ে এই ইনপুট জমে এড়াতে আপনাকে কিছু অতিরিক্ত যুক্তি যুক্ত করতে হবে।
amos

ইতিমধ্যে বিদ্যমান থাকলে আপনি ইনপুট উপাদানটি যুক্ত করার আগে সম্ভবত এটি সরাতে চাইবেন$(this).find("input[name="+"something"+"]").remove();
কে বিজ

42

এটা চেষ্টা কর:

$('#form').submit(function(eventObj) {
    $(this).append('<input type="hidden" name="field_name" value="value" /> ');
    return true;
});

আমার একটি ফাইল ফিল্ড গতিশীল যুক্ত করতে হবে। আমি টাইপ = ফাইল, এবং মানটিও ফাইল হিসাবে চেষ্টা করেছিলাম (আমি ওয়েবকিটডেরিটোরি ব্যবহার করছি, সুতরাং আমি আসলে ফাইলের বস্তুগুলি পাই) তবে এটি কখনও এটি পাস করে বলে মনে হয় না। ইনপুট পাঠ্য সর্বদা যদিও পাস হয়। আমাকে সাহায্য করুন!
স্বাথী কাকরলা

thisঅপ্রয়োজনীয়#form
রিনোগো


10

আপনাকে hidden inputযে মানটি পাঠাতে হবে তার সাথে আপনি একটি যুক্ত করতে পারেন :

$('#form').submit(function(eventObj) {
    $(this).append('<input type="hidden" name="someName" value="someValue">');
    return true;
});

5

এইটা কাজ করে:

var form = $(this).closest('form');

form = form.serializeArray();

form = form.concat([
    {name: "customer_id", value: window.username},
    {name: "post_action", value: "Update Information"}
]);

$.post('/change-user-details', form, function(d) {
    if (d.error) {
        alert("There was a problem updating your user details")
    } 
});

হ্যাঁ, তবে ফলাফলের পৃষ্ঠায় কোনও পুনর্নির্দেশ নেই।
ওমিক্রন

3
এটি কাজ করা উচিত: $('body').append(form); $(form).submit();
জেফ লোরি

এটি আমার পক্ষে সবচেয়ে সহায়ক ছিল কারণ আমার প্রচুর পরিমাণে উত্পন্ন ক্ষেত্র রয়েছে এবং আমি প্রত্যেকটির জন্য গোপন ক্ষেত্র তৈরি করতে চাই না।
স্প্রেচারপ্রফি

@ স্প্র্যাচপ্রফি কেন নয়?
ডিসপ্লে

3

কারও জন্য উপকারী হতে পারে:

(এমন একটি ফাংশন যা আপনাকে বিদ্যমান ইনপুটগুলির জন্য ওভাররাইড সহ কোনও অবজেক্ট ব্যবহার করে ফর্মটিতে ডেটা যুক্ত করতে দেয়) [খাঁটি জেএস]

(ফর্মটি একটি ডোম এল, এবং জেকারি অবজেক্ট নয় [ jqryobj.get (0) আপনার প্রয়োজন হলে ]))

function addDataToForm(form, data) {
    if(typeof form === 'string') {
        if(form[0] === '#') form = form.slice(1);
        form = document.getElementById(form);
    }

    var keys = Object.keys(data);
    var name;
    var value;
    var input;

    for (var i = 0; i < keys.length; i++) {
        name = keys[i];
        // removing the inputs with the name if already exists [overide]
        // console.log(form);
        Array.prototype.forEach.call(form.elements, function (inpt) {
             if(inpt.name === name) {
                 inpt.parentNode.removeChild(inpt);
             }
        });

        value = data[name];
        input = document.createElement('input');
        input.setAttribute('name', name);
        input.setAttribute('value', value);
        input.setAttribute('type', 'hidden');

        form.appendChild(input);
    }

    return form;
}

ব্যবহার:

addDataToForm(form, {
    'uri': window.location.href,
     'kpi_val': 150,
     //...
});

আপনি এটিও এর মতো ব্যবহার করতে পারেন

var form = addDataToForm('myFormId', {
    'uri': window.location.href,
     'kpi_val': 150,
     //...
});

আপনি যদি খুব পছন্দ করেন তবে আপনি # যুক্ত করতে পারেন ("# মাইফর্মিড")।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.