Formular "action" per JS abändern

DiDiJo

Erfahrenes Mitglied
Hi Leute,

ich habe folgendes Suchformular:

HTML:
<form id="suchergebnisse" name="search2" method="post" action="/content/searchobjects.php">

<a name="immo_search_list"></a>
[... Ausgabe der Ergebisse ...]

<input type="hidden" name="start" id="start_hiddenField" value="xyz" />
<input type="hidden" name="action" id="" value="search" />

[... weitere hidden-Felder (Eingabe aus der Suchmaske) ...]

</form>

Nun möchte ich, wenn ich zur nächsten Seite springe (nicht bei den ersten Suchergebnissen) , dass ich den HTML-Kopf (Navi + Slideshow etc...) überspringe und direkt bei den Suchergebnissen ankomme.

Dafür habe ich mir folgende JS-Funktion geschrieben:
Code:
function submitSearchForm(start_val) {
	form = document.getElementById('suchergebnisse');
	form.action.value = '/content/searchobjects.php#immo_search_list';
	form.start_hiddenField.value = start_val;
	form.submit();
}

Nun wird aber die nicht "Action" vom Formular geändert, sondern dass hidden-field "action" wird mit einem neuen Wert gefüllt und die Suche funktioniert nicht mehr.

Kann ich irgendwie die Formular-Action ändern, ohne dass ich die Formular-Felder Bezeichnung ändern muss. Ich weiß nämlich nicht genau wo irgendwo auf der Seite ein
PHP:
$_REQUEST['action'] == 'search'
$_POST['action'] == 'search'
$_GET['action'] == 'search'

abgefragt wird.

mfg

DiDi
 
Hi,

normalerweise sollte es über die Methoden getAttribute und setAttribute manipulierbar sein ... ABER, der IE macht hier dem Ganzen einen Strich durch die Rechnung, weil der Attributname einem Elementname entspricht.

Eine weitere Alternative ist die attributes-Kollektion des form-Objekts. Über das Objekt action und dessen Eigenschaft value ist der Zugriff möglich.
Code:
function submitSearchForm(start_val) {
    form = document.getElementById('suchergebnisse');
    form.attributes.action.value += "#immo_search_list";
    form.start_hiddenField.value = start_val;
    form.submit();
}
Sollte in den gängigen Browsern laufen. Andernfalls müsstest du eben eine Browserweiche einfügen, die zwischen IEs und Nicht-IEs separiert, z.B.
Code:
if(document.all && !window.opera){
  // IE, über attribute-Kollektion
}else{
  // sonst, über getAttribute und setAttribute
}
Ciao
Quaese
 

Neue Beiträge

Zurück