2016-07-05 15 views
2

Drupal 7サイト内でPHPフォームのトラブルシューティングを試みています。現時点では、ユーザーがボタンをクリックした場合にのみフォームを送信できます。私は "Enter"キーで提出を有効にしたいと思います。これどうやってするの?Drupal PHPフォーム入力時に入力

$form['search']['search_button'] = array(
      '#type' => 'button', 
      '#value' => 'Search', 
      '#ajax' => array(
       'callback' => 'ajax_search_callback', 
//   'wrapper' => 'search-results', 
       'wrapper' => 'search', 
       'method' => 'replace', 
       'effect' => 'fade', 
       'event' => 'click', 
      ), 
     ); 

私は「イベント」フィールドを変更したり、別のフィールドを追加する必要があると思われる:

は、ここで関連するコードです。

+1

は(同じ質問に対してhttp://drupal.stackexchange.com/questions/5780/ajax-submitted-forms-with-enterを参照してくださいいくつかの答え) –

答えて

0

ajax配列にkeypress属性を追加し、TRUEに設定する必要があります。 これは、apiのドキュメントhereの形式で説明されています。

EDIT: 最初の解決策は、1つの入力フィールドでのみ機能します。 13は、入力します(またはMac用の復帰)のキーコードである

$form['#attributes']['onkeypress'] = 'if(event.keyCode==13){this.form.submit();}'; 

:フォーム上のキープレスイベントを追加するには、attributes配列にそれを追加することにより、フォームに「onkeypressでは」属性を追加する必要があります。

私はそれが一番クリーンな解決策かどうか分かりませんが、うまくいくはずです。

+0

これは、フォーカスがボタンやフォームの他の項目にも当てはまる場合に適用されますか? – MadPhysicist

+0

文書によると、ボタンにフォーカスがある場合のみです。 –

+0

あなたはピエールです。ボタンにフォーカスが必要です。しかし、この解決策は適切ではないようです。私は別のソリューションで編集しました。 – RedhaL

0

私はJSのエキスパートではありませんが、これは自分自身で問題に取り組んできた方法です。

私はそれをテストしていないが、私は基本的に、あなたがキープレスイベント13を探して、あなたはあなたのフォームを送信あなたのjsファイルに

$(document).ready(function() { 
    $("#target").keypress(function() { 
    if (event.which == 13) { 
     $('my_form').submit(); 
    } 
    }); 
}); 

を次の文のようなものを追加することをお勧めします。

いくつかのユーザーの問題に直面する可能性があるため、フォームにはテキストタグがないことを願っています。

EDIT:Javascriptをどこに追加しますか?

フォームを生成するためのカスタムモジュールを作成していると仮定して、モジュールの.infoファイルへのパスを追加するか、関数drupal_add_js("your_path_to_js_file");を使用してください。

私はそれが役に立ちそうです。

乾杯

+0

これをどのJSファイルに追加しますか?それはDrupalサイトです。 – MadPhysicist

+0

私は自分の投稿を編集して、よりクリーンな回答を得ました。 –

1

は、これが私の仕事:

$form[FORM_ITEM]['#attributes']['onkeypress'][]="jQuery('input').keydown(function(e) {if (e.keyCode == 13) {e.preventDefault(); jQuery('#edit-submit').mousedown();}});"; 
関連する問題