从提交的表单中获取值

RSM*_*RSM 7 html javascript forms jquery

我有一个非常简单的表格:

<form id="toBeTranslatedForm" action="actionpage.php" method="POST" >
        <textarea name="userInput" id="toBeTranslatedTextArea"></textarea>
        <select id="translationOptions">//dynamically filled</select>
        <input type="submit" value="Translate" />
</form>
Run Code Online (Sandbox Code Playgroud)

使用jQuery,我正在检测是否已提交表单:

function outputTranslated()
{
    $('#toBeTranslatedForm').submit(function() {
        //do stuff
    });
}
Run Code Online (Sandbox Code Playgroud)

我如何从上面的表单中在文本区域中键入文本以及在选择框中选择的选项?理想情况下,我想将它们放入数组。

Mhm*_*z_A 8

使用 Vanilla JS FormData

form.addEventListener("submit", function(e) {
  e.preventDefault();
  var data = new FormData(form);
  for (const [name,value] of data) {
    console.log(name,value)
  }
})
Run Code Online (Sandbox Code Playgroud)
   
<form id="form">
     <select id="sl1" name="sl">
       <option value="0" defaultSelected="true">-- Select --</option>
       <option value="trek">-- Trek --</option>
       <option value="rim">-- RIM --</option>
     </select>
     <label for="lg">remember</label>
     <input type="checkbox" name="remember" id="lg" />
     <button type="submit">submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)


Mig*_*jal 7

您可以从提交事件中获取数据

function outputTranslated() {
    $('#toBeTranslatedForm').submit(function(evt) {
       const form = evt.target;
       // get the field that you want
       const userInputField = form.elements['userInput'];
       alert(userInputField.value);
    });
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*ton 5

var theArray = $('#toBeTranslatedForm').serializeArray();
Run Code Online (Sandbox Code Playgroud)

请参阅.serializeArray文档

顺便说一句,这不是“来自提交的表单”,因为您是在实际提交任何内容之前要求它们的。


小智 3

您可以通过以下方式获取价值:

function outputTranslated() {
    $('#toBeTranslatedForm').submit(function() {
       var textareaval = $('#userInput').val();
       alert(textareaval);
    });
}
Run Code Online (Sandbox Code Playgroud)

textareaval您可以通过在上面代码中的变量定义之后添加此行来对选择框执行相同的操作:

var selectval = $('#translationOptions').val();
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用序列化,也可以手动将其放入数组中:

var a = [textareaval,selectval];
Run Code Online (Sandbox Code Playgroud)