2009-06-27 6 views
0

ich einen Knopf auf einer CCK Form in einem Feldgruppen- einreichen hinzugefügt haben mit hook_form_alter wie folgt:Stoppen Sie eine benutzerdefinierte Senden-Schaltfläche von Brennen der Formularvalidierung auf einer CCK Form

function mymodule_form_alter(&$form, $form_state, $form_id) { 

    if ($form_id == 'object_node_form') { 

    $form['group_wikipedia']['search'] = array(

'#type' => 'submit', 
'#value' => t('Search Wikipedia'), 
'#name' => 'searchwiki', 
'#submit' => array('mymodule_searchwiki_submit'), 
    ); 

    } 
} 

Wenn ich drücken Sie die Taste, die Validierungshandler für das vollständige Formular, z. Prüft auf benötigte Felder, laufe so, als hätte ich am Ende des Formulars die 'Submit'-Taste gedrückt.

Ich dachte, dass das Ändern der Eigenschaft #name von 'op' zu 'searchwiki' diese Art von Verwechslung verhindern würde, aber nicht so.

Kennt jemand einen Workaround dafür?

Antwort

0

Ich glaube, dass das gesamte Formular immer eingereicht werden wird, egal, welche Schaltfläche senden der Benutzer drückt. Wenn Sie eine Suchfunktion ausführen möchten, können Sie etwas AJAX erstellen, das die Daten abruft und anzeigt. Mit jQuery können Sie auch das Senden des Formulars stoppen, aber FALSE für die Funktion zum Klicken auf die Schaltfläche zurückgeben (die Sie in Ihrer js ausführen können). Sie werden wahrscheinlich nicht in der Lage sein, die Güte der Drupal Form api zu nutzen.

+0

Der Plan ist ein AHAH Rückruf an den Knopf hinzufügen, so kann ich eine Anfrage an Wikipedia im Hintergrund und ersetzen Sie das Körperfeld abfeuern mit Text, nachdem der Benutzer die Suche gestartet hat. CCK schafft es, dies mit seinen Add-Schaltflächen zu tun, also werde ich wohl wieder dort graben. Danke trotzdem. Ich kann jQuery usw. als letzten Ausweg verwenden. – hitfactory

Verwandte Themen