Ich habe ein Formular wie:

<form method="POST" action="page.html" onsubmit="alert('foo'); // validate();" name="foobar">
...
</form>

Und ein Link wie:

<div onclick="document.foobar.submit();">click me</div>

Wie kann ich die submit () -Methode erfassen und meine Validierungsfunktion aufrufen?

JsBin Beispiel

2
Steffen Maas 10 Okt. 2012 im 15:06

4 Antworten

Beste Antwort

Sie können die Methode von HTML selbst aufrufen. geändert jsbin. Anstatt das Formular per Klick zu senden, können Sie submitHandler aufrufen und die Formularreferenz übergeben.

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
  <script type="text/javascript">
    function validate(){

    }

    function submitHandler(form){
      validate();
      alert('foo');

}
    window.onload = function(){
        document.foobar.submit = submitHandler;
    }
</script>

</head>
<body>
    <form method="POST" action="page.html" onsubmit="submitHandler(this);" name="foobar">
      <input type="text" />
    </form>

    <div onclick="document.foobar.submit()">click me</div>
</body>    
</html>
1
Anoop 10 Okt. 2012 im 12:47

Versuche dies:

<script type="text/javascript">
function addEventsToHTML(){
    var form = document.getElementById('foobar');
    form.onsubmit = submitHandler;
    function submitHandler(){
        validate();
    }
}
window.onload = addEventsToHTML;
</script>
0
Artem Vyshniakov 10 Okt. 2012 im 11:10

Sie können den Handler jQuery .submit() verwenden.

$('form').submit(function(evt) {
  evt.preventDefault();
  alert('Handler for .submit() called.');
  // Validate function returns false or true
});
0
David 10 Okt. 2012 im 11:09

Identifizieren Sie Ihr Formular eindeutig mit einer ID

document.getElementById('formid').onsubmit = function() {
    // You have captured the submit method now do what you need
};

Demo

1
Starx 10 Okt. 2012 im 12:05