【问题标题】:How can I pass multiple places seperated by commas from the following multipart form?如何从以下多部分表单中传递以逗号分隔的多个位置?
【发布时间】:2018-08-06 00:35:49
【问题描述】:

我的html表单是

<form method="POST" enctype="multipart/form-data" v-on:submit.prevent="handelSubmit($event);">
  <div class="clear">
    <div class="col-md-3"></div>
    <div class="col-md-6">

      <div class="form-group">
        <label>Offer <small>(required)</small></label>
        <input type="file" name="offer" accept="image/*" required="">

      </div>
      <div class="form-group">

        <div class="form-group">
          <label>Place :</label>
          <select id="basics" class="selectpicker" data-live-search="true" data-live-search-style="begins" title="Select Place" name="places" ref="place" multiple="">
        <option v-for="post in places" v-bind:value="post.id" >{{post.name}}</option>
                                                            </select>
        </div>
        <input type='submit' class='btn btn-finish btn-primary' name='finish' value='Finish' />
      </div>
    </div>
</form>

我的vue js代码是

     handelSubmit: function(e) {
           var form = e.target; // Get hold of the form element from the event
           var fd = new FormData(form); // create a FormData
           fd.append('auth-token',this.authType)
           fd.append('post',this.postId)

           console.log(...fd);
            $.ajax({
              url: 'http://127.0.0.1:8000/alpha/add/offer/',
              data: fd,
              type: 'POST',
              processData: false,  // Important!
              contentType: false,
              success: function(e) {
              if (e.status)
              {

                $("#alertModal").modal('show');
              $(".alert").removeClass("hidden").html("Your Offer has been successfully added");


            }
              else {

               alert("Registration Failed") 
              }
          }
            });
            return false;
},

我需要选择多个适合我的地方。我需要发送这些用逗号分隔的多个地方。怎么能发这些地方用逗号隔开,现在是一个一个发。我需要发送以逗号分隔的地点。请帮助我获得同样的信息。

否则还有其他方法吗?

【问题讨论】:

    标签: javascript html vue.js vue-component form-data


    【解决方案1】:

    我看不到您在 html 中使用 v-model。只是,使用 v-model 将解决您的问题:

    // ...
    data() {
      return {
       selectedValues: []
      }
    }
    

    现在,当您在 select html 中使用 v-model="selectedValues" 时,vue 会自动将选定的值存储在 selectedValues 中,现在您有了选定值的数组,这样您就可以使用 join() 方法发布它们: (在你的表单数据中构造这个)

    this.selectedValues.join(', ');
    

    你也可以在 vue 文档中查看example

    【讨论】:

    • 先生,那我怎么上传图片
    • 先生,在这种情况下我将如何上传图片?你能帮忙吗
    • 您的代码工作正常,只需按照我提到的进行更改即可。
    • fd.append('place',this.place.join(', '));
    • 先生好吗??
    【解决方案2】:

    我认为您可以使用具有计算值的隐藏字段来解决它。

    var app = new Vue({
      el: '#app',
      data: {
        value: []
      },
      computed: {
        commaSeparated() {
          return this.value.join();
        }
      }
    })
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <div id="app">
      <label>Muiltiple</label>
      <br/>
      <select v-model="value" multiple>
        <option value="volvo">Volvo</option>
        <option value="saab">Saab</option>
        <option value="mercedes">Mercedes</option>
        <option value="audi">Audi</option>
      </select>
      <br/>
      <input :value="commaSeparated" type="hidden" />
      {{commaSeparated}}
    </div>

    【讨论】:

    • 你不需要使用棘手的方法。只是简单的 v-model 将是一个解决方案。
    • 先生,那我怎么上传图片
    • 这种方法适用于常规表单数据。如果您需要上传图片,只需输入 &lt;input type="file"/&gt; 并让原生表单提交完成工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 2020-09-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多