【问题标题】:Get values from submitted form从提交的表单中获取值
【发布时间】:2012-06-12 22:05:07
【问题描述】:

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

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

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

function outputTranslated()
{
    $('#toBeTranslatedForm').submit(function() {
        //do stuff
    });
}

如何从上面的表格中获取文本区域中输入的文本和选择框中选择的选项?理想情况下,我想将它们放入一个数组中。

【问题讨论】:

    标签: javascript jquery html forms


    【解决方案1】:

    与香草 JS FormData:

    form.addEventListener("submit", function(e) {
      e.preventDefault();
      var data = new FormData(form);
      for (const [name,value] of data) {
        console.log(name,value)
      }
    })
       
    <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>

    【讨论】:

      【解决方案2】:
      var theArray = $('#toBeTranslatedForm').serializeArray();
      

      请参阅.serializeArray docs

      在迂腐的注释中,这不是“来自提交的表单”,因为您是在实际提交任何内容之前要求它们。

      【讨论】:

      • 但是我如何调用该数组,因为我看不到它设置实际数组的位置
      • @RyanMurphy 已编辑...我假设您已经阅读了链接并看到它返回了一个数组。
      • 这只是输出[object, object]
      • 这是一个对象数组,每个对象都是一个名称值对。
      • @RyanMurphy 不是真的,它是数组中的表单值,作为名称值对。
      【解决方案3】:

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

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

      【讨论】:

      • 这是最清楚的答案。略有改进:const data = Object.fromEntries(new FormData(form)); alert(data.userInput).
      【解决方案4】:

      以下是获得价值的方法:

      function outputTranslated() {
          $('#toBeTranslatedForm').submit(function() {
             var textareaval = $('#userInput').val();
             alert(textareaval);
          });
      }
      

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

      var selectval = $('#translationOptions').val();
      

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

      var a = [textareaval,selectval];
      

      【讨论】:

      • 这不会按要求将它们放入数组中。
      • 2017年编辑,但示例仍然使用jquery?
      【解决方案5】:

      我想你正在寻找这样的东西。

      $('#toBeTranslatedForm').submit(function() {
        alert($(this).serialize());
        return false;
      });
      

      希望对你有帮助

      【讨论】:

      【解决方案6】:

      提交后,您可以通过执行以下操作来获取值:

      function outputTranslated()
      {
      $('#toBeTranslatedForm').submit(function() {
          var textarea = $('#toBeTranslatedTextArea').val();
          var allVals = [];
          $('#translationOptions :checked').each(function() {
         allVals.push($(this).val());
       });
      });}
      

      【讨论】:

        猜你喜欢
        • 2020-03-11
        • 2017-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多