2010-12-01 1 views
1

Ich habe im Grunde eine Webseite mit zwei Frames.So machen Sie ein Anker-Tag nicht zu einer URL/Öffnen Sie eine Datei

-Left for nav 
-Right for main content. I have a text-box here called "file_path" 

Derzeit habe ich eine Liste von Dateien auf der linken Seite, die ich als Anker anzeigen. Ich möchte die Funktionalität, dass, wenn der Benutzer auf eine Datei auf dem linken Frame klickt, ich den Wert ergreifen und es in das Textfeld auf dem rechten Frame einfügen kann. Ich bin in der Lage, dies erfolgreich zu machen, aber das Problem ist, dass, nachdem ich den Wert im rechten Rahmen bekommen habe, mein linker Rahmen die Datei in diesem Abschnitt öffnet ... Ich möchte verhindern, dass die Datei geöffnet wird. Ich will nur, dass es dort den Wert übergibt.

echo "<li><a href=\".$filepath.\" onClick=\"parent.right.document.getElementById('file_path').value='$filepath'\">$filepath</a></li>"; 

Ich habe versucht, nur die onClick für das Listenelement setzen, aber auf diese Weise ich Funktionalität verlieren, so dass der Benutzer fühlt, dass der Link angeklickt ist. Es erscheint nur als statischer Text ... Ich möchte lieber den Cursor ändern, wenn der Benutzer darauf wie ein Anker-Tag reagiert, aber die Datei nicht öffnen ... Ist das möglich?

echo "<li onClick=\"parent.right.document.getElementById('file_path').value='$filepath'\">$filepath</li>"; 

Antwort

-1

nur <a style="cursor:pointer" onclick="...">bla bla bla</a>

+0

Danke ... das hat funktioniert! – frames

+2

'a' ohne' href' ist nicht standardisiert. Zum Beispiel funktioniert der Stil "a: hover" in IE nicht. – Emmett

3
<a href="nothing.html" onclick="return false;">Clicking me does nothing</a> 

Rückkehr false aus dem Onclick - ob aus einer Funktion Rückgabewert ist oder gerade dort setzen - wird das Standardverhalten des Ankers deaktivieren.

+0

Greg gesagt, dies ist interessant, und ich war nicht bewusst .. Vielen Dank! Die Lösung von Pate eignet sich jedoch am besten für mich, da ich die Funktion onClick verwenden möchte, statt eine andere aufzurufen, die false zurückgibt ... – frames

1

Sie müssen das href-Attribut der Links auf href = 'javascript: void (0);' setzen. Sie werden Links sein, werden aber nirgendwohin gehen.

G

+1

Alternativ können Sie auch Ihre aktuelle Lösung verwenden, aber verwenden Sie die folgende css-Regel: li.someClassForTheseListItems {cursor : Zeiger; Text-Dekoration: unterstreichen; } – dartacus

+0

... obwohl es immer am besten ist, Links als Links zu verwenden: Zugänglichkeits-Implikationen. – dartacus

+0

Dank Dartacus ... aber ich bin mir nicht sicher, was Sie mit Zugänglichkeit Implikationen meinen. Könnten Sie das näher ausführen? – frames