# Direktes Absenden eines Formulars verhindern



## bertiSR (6. August 2009)

hallo ich habe folgenden code:


```
<script language="JavaScript" src="http://code.jquery.com/jquery-latest.js"></script>
<script language="JavaScript" src="script.js"></script>

<form name="form_name">

	<input id="input1" name="input1" type="text" value="" />
	<input id="button" name="button" type="button" value="Abschicken" />

</form>

<div id="message">Yes</div>
```


```
$(document).ready(function(){

	$("#button").click(function(){
		val1 = ($("#input1").val());
		$.ajax({
			type: "get",
			url: "datei.php",
			data: "value=" + val1,
			success: function(msg){
				$("#message").text("Data loaded: " + msg);
			}
		});
	});

});
```
In datei.php wird nur ein var_dump($_GET) ausgeführt und wiedergegeben.

Wenn ich im Formular im Textfeld etwas eingebe und danach auf enter drücke, dann wird das Formular automatisch mit get abgesendet. Im Browser erscheint dann url/?input1=WERT.
Wenn ich einen Wert eingebe und danach auf den Button klicke wird das Script ausgeführt.
Was muss ich ändern damit das Formular beim drücken der enter-Taste nicht abgesendet wird und im Browser der get-Wert angezeigt wird, sondern dass das Script genauso wie bei einem Klick auf den Button ausgeführt wird?


----------



## kuddeldaddeldu (6. August 2009)

Hi,

definiere für das Formular einen keydown-Handler, in dem Du bei keyCode 13 (Entertaste) einfach das click-Event des Buttons triggerst:


```
$("form").keydown(function(e) {
   if(e.keyCode == 13) {
      $("#button").trigger("click");
   }
});
```

LG


----------



## chmee (21. August 2009)

Komisch, ähnlich ist auch mein aktuelles Problem..Meine Source ist so ziemlich das Selbe wie oben. Bei mir schaltet aber immer das browser-eigene submit, ergo bekomme ich ständig auch ein reload. Wie also schalte ich genau das aus? Eine Form ohne submit eben.

mfg chmee


----------



## kuddeldaddeldu (21. August 2009)

Hi,

hmm, folgender Code funktioniert bei mir einwandfrei:


```
<script type="text/javascript" src="jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
   $("#button").click(function(){
      alert("Button geklickt!");
   });
   $("form").keydown(function(e) {
      if(e.keyCode == 13) {
         $("#button").trigger("click");
      }
   });
});
</script>

<form action="michgibtsnicht">
   <input name="feld" type="text" value="" />
   <input id="button" type="button" value="Abschicken" />
</form>
```

Kannst Du ein Beispiel zeigen, bei dem das auftritt?

LG


----------



## Sven Mintel (21. August 2009)

Es sollte eigentlich so ausreichen(zusätzlich zur Überwachung des [ENTER]):

```
<form name="form_name" onsubmit="return false">
```


----------



## chmee (21. August 2009)

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
 <title>jQuery Beispiel zu Ajax</title>
 <script type="text/javascript" src="./_data/jquery_132.js"></script>
 <script type="text/javascript">
   $(document).ready(function(){
	
	$("#formular").submit(function(e) {
		var tagging = $('#sym').val();
		/* e.preventDefault(); */
		$.post("search.php",{tag:tagging},function(data){$('#content').html(data);});
   		
	});  
   });
</script>
</head>
<body>
	<div id="b_form">	<form id="formular" class="white">
				 <label for="sym" class="dick white">SUCHE NACH</label>
				 <input class="search_field" id="sym" name="sym" value="liebe">
				 <input id="such" class="button" type="submit" value="test" />
				</form>
	</div>
	<div id="content">
		</div>
</body>
</html>
```
In diesem Beispiel scheint er beide submits zu feuern, wobei ich dachte, ich würde mit der Funktion .submit die interne override'n. Wenn ich die preventDefault dazumache, geht es, aber auch andere Browser-Events wie zB Links sind dann prevent'ed.

mfg chmee


----------



## kuddeldaddeldu (21. August 2009)

Hi,

dann setz einfach ein "return false;" ans Ende Deines Submit-Handlers. 

LG


----------



## chmee (21. August 2009)

Ja! Das war's. Hach je..

mfg chmee


----------

