programing

제출하기 전에 양식에 필드를 추가하는 방법은 무엇입니까?

i4 2023. 8. 24. 21:48
반응형

제출하기 전에 양식에 필드를 추가하는 방법은 무엇입니까?

자바스크립트와 JQuery를 사용하여 POST를 사용하여 HTTP 양식에서 보낼 필드를 추가하는 방법이 있습니까?

내 말은:

<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>

네. 숨겨진 매개 변수로 시도해 보세요.

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

사용해 보십시오.

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

추가할 수 있습니다.hidden input전송해야 할 값을 지정됩니다.

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

효과:

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")
    } 
});

다음과 같은 경우에 유용할 수:

(객체를 사용하여 양식에 데이터를 추가할 수 있는 함수로, 존재하는 경우 기존 입력에 대해 재정의함) [pure js]

(폼은 모델이지 jquery 객체가 아닙니다 [필요한 경우 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,
     //...
});

원하는 경우 #("#myformid")를 추가할 수 있습니다.

Khawer의 답변을 확장하면 일관성을 위해 jQuery 사용을 자제할 수 있습니다.
<input type="hidden" name="field_name" value="value" />

언급URL : https://stackoverflow.com/questions/17809056/how-to-add-additional-fields-to-form-before-submit

반응형