programing

제출 시 폼 데이터를 가져오고 있습니까?

itsource 2022. 8. 1. 22:02
반응형

제출 시 폼 데이터를 가져오고 있습니까?

양식을 제출할 때 입력 값을 얻고 싶습니다.

<input type="text" id="name">

폼 입력 바인딩을 사용하여 값을 변수로 업데이트할 수 있지만, 전송 시에만 이 작업을 수행할 수 있는 방법은 무엇입니까?현재 가지고 있는 것은 다음과 같습니다.

<form v-on:submit.prevent="getFormValues">

그러나 getFormValues 메서드 내에서 값을 가져오려면 어떻게 해야 합니까?

또한 사용자가 바인딩을 통해 데이터를 입력할 때 변수를 업데이트하는 것이 아니라 제출 시 실행함으로써 어떤 이점이 있습니까?

submitaction은 이벤트를 방출하여 이벤트 대상을 제공합니다.

전송 이벤트의 대상은 요소 속성을 가진 HTMLFormElement입니다.이름 또는 인덱스로 특정 요소를 반복하거나 액세스하는 방법은 이 MDN 링크를 참조하십시오.

를 추가하는 경우name입력에 따라 폼 제출 핸들러에서 다음과 같이 필드에 액세스할 수 있습니다.

<form @submit.prevent="getFormValues">
  <input type="text" name="name">
</form>

new Vue({
  el: '#app',
  data: {
    name: ''
  },
  methods: {
    getFormValues (submitEvent) {
      this.name = submitEvent.target.elements.name.value
    }
  }
}

이 작업을 수행하는 이유에 대해: HTML 폼은 이미 이 기능을 사용하지 않도록 설정하는 등의 유용한 로직을 제공하고 있습니다.submit유효하지 않은 폼의 액션은 Javascript에서 다시 구현하지 않는 것이 좋습니다.따라서 작업을 수행하기 전에 소량의 입력이 필요한 항목 목록을 생성하는 경우(카트에 추가할 항목 수 선택 등), 각 항목에 양식을 넣고 네이티브 양식 검증을 사용한 후 제출 작업에서 가져온 대상 양식에서 값을 가져올 수 있습니다.

특히 Schlangguru가 응답한 것처럼 모델 바인딩을 사용해야 합니다.

다만, 통상의 Javascript나 레퍼런스 등, 사용할 수 있는 다른 테크닉이 있습니다.하지만 왜 모델 바인딩 대신 그렇게 하고 싶어 하는지 이해가 안 됩니다.

<div id="app">
  <form>
    <input type="text" ref="my_input">
    <button @click.prevent="getFormValues()">Get values</button>
  </form>
  Output: {{ output }}
</div>

보다시피, 나는ref="my_input"입력 DOM 요소를 가져오려면:

new Vue({
  el: '#app',
  data: {
    output: ''
  },
  methods: {
    getFormValues () {
      this.output = this.$refs.my_input.value
    }
  }
})

당신이 시험해보고 싶다면, 저는 작은 jsFiddle을 만들었습니다.

하지만 다시 한 번 말하지만, 제 답변은 "좋은 관행"이라고 할 수 있는 것과는 거리가 멀어요.

입력에 대한 모델을 정의해야 합니다.
<input type="text" id="name" v-model="name">

그런 다음 다음 다음 방법으로 값에 액세스할 수 있습니다.this.name내면에getFormValues방법.

적어도 TodoMVC 공식 예에서는 다음과 같이 합니다.https://vuejs.org/v2/examples/todomvc.html (을 참조).v-model="newTodo"HTML 및addTodo()(JS의 경우)

.★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★나는 다음 용도를 조합했습니다.v-model "submitEvent" 'submitEvent'를 지정합니다. <input type="submit" value="Submit">submitEvent를 설정합니다.

<!DOCTYPE html>
    <html>
        <head>
            <script src="https://unpkg.com/vue"></script>
        </head>
    <body>
      <div id="app">
        <form  @submit.prevent="getFormValues">
           <div class="form-group">
              <input type="email" class="form-control form-control-user"                                            
              v-model="exampleInputEmail"                                
              placeholder="Enter Email Address...">
           </div>
           <div class="form-group">
              <input type="password" class="form-control"
              v-model="exampleInputPassword" placeholder="Password">   </div>
              <input type="submit" value="Submit">
        </form>
      </div>
      <script>
            const vm = new Vue({
                    el: '#app',
                    methods: {
                        getFormValues (submitEvent) {
                        alert("Email: "+this.exampleInputEmail+" "+"Password: "+this.exampleInputPassword);
                        }
                    }
            }); 
        </script>
        </body>
    </html>

언급URL : https://stackoverflow.com/questions/42694457/getting-form-data-on-submit

반응형