Heim  >  Fragen und Antworten  >  Hauptteil

So verwenden Sie die Methode .preventDefault(), um ein Schaltflächenklickereignis zu verhindern

<p>Angesichts dieses Tutorials<a href="https://vuejs.org/guide/essentials/event-handling.html#accessing-event-argument-in-inline-handlers">https:// vuejs. org/guide/essentials/event-handling.html#accessing-event-argument-in-inline-handlers</a></p> <p>Im unten gezeigten Code rufe ich <code>.preventDefault</code> auf, um das normale Verhalten des Abbruchs des <code>click</code>-Ereignisses zu erwarten. Mit anderen Worten: Ich erwarte, dass die Schaltfläche nach dem Aufruf von <code>.preventDefault</code> nicht mehr anklickbar ist, da <code>.preventDefault</code> meines Erachtens die normale Funktionalität der Schaltfläche deaktiviert . </p> <p>Aber was passiert, ist, dass die Schaltfläche immer noch anklickbar ist, als ob <code>.preventDefault</code> keine Wirkung hätte. </p> <p>Bitte erklären Sie mir, wie ich <code>.preventDefault</code> richtig verwende, um Schaltflächenklicks zu deaktivieren. </p> <p><strong>Code</strong>: </p> <pre class="brush:php;toolbar:false;"><template> <div> <button v-on:click="warn('msg',$event)">warn</button> </div> </template> <script> {ref} aus 'vue' importieren Standard exportieren { Name: 'App', Komponenten: { Hallo Welt } } </script> <Skript-Setup> const warn = (msg,DOMEvent) => console.log("warn:",msg," event:",DOMEvent); DOMEvent.preventDefault() } </script></pre></p>
P粉254077747P粉254077747413 Tage vor527

Antworte allen(2)Ich werde antworten

  • P粉002023326

    P粉0020233262023-09-02 19:15:13

    preventDefault在以下情况下非常有用:

    • 点击“提交”按钮时,阻止表单的提交
    • 点击链接时,阻止链接跳转到URL

    在您的情况下禁用按钮,您可以使用:

    const warn = (msg,DOMEvent) => {
      DOMEvent.srcElement.disabled = true;
    }

    Antwort
    0
  • P粉726234648

    P粉7262346482023-09-02 17:59:20

    preventDefault()不会禁用按钮,但会阻止其默认操作,主要在Submit操作中会注意到。
    要在点击时禁用按钮,你需要像这样做:

    <template>
      <div>
          <button :disabled="isDisabled" v-on:click="warn('msg',$event)">warn</button>     
    </div>
    </template>
    
    <script> 
        import {ref} from 'vue' 
    
        export default {
          name: 'App',
          components: {
            HelloWorld
          }
    }
    </script>
     
    <script setup> 
        const warn = (msg,DOMEvent) => {
          console.log("warn:",msg," event:",DOMEvent);
          //DOMEvent.preventDefault() //uncomment if needed
          this.isDisabled = true;
        }
    </script>

    Antwort
    0
  • StornierenAntwort