drupalフォームの作成についてサポートが必要です。フォームを作成しましたが、完全に正常に機能します。ユーザーのメール、IP、日付と時刻をキャプチャするだけです。問題フォームを送信するためにユーザーがボタンをクリックする必要がないようにしたいのですが、1秒後などにフォームを自動的に送信したいのです。
//form hook, form elements start here
function form_casl_form($form, &$form_state) {
//sometext here
$form['some_text'] = array(
'#markup' => '<p><b>Simply click the button to subscribe.</b>
</p>'
);
//submit button
$form['submit_button'] = array(
'#type' => 'submit',
'#value' => t('Subscribe'),
);
return $form;
}
//validate hook
とにかくこれを行うにはありますか?私は仕上げに非常に近づいており、これが私が行き詰まっている唯一のことです。どんなアイデアでもいただければ幸いです!
DrupalフォームAPIのみを使用してフォームを自動送信するソリューションはありません。これを実現するには、軽量のカスタムJavaScriptをフォームに追加する必要があります。JavaScriptを追加する適切な方法あなたのフォームは、フォームの #attach 属性を使用することです。
$form['#attached']['js'][] = drupal_get_path('module', 'YOURMODULE') . '/YOURMODULE.js';
JavaSriptコードitslef かなり単純です 、それを Immediately Invoked Function Expression で適切にラップし、 Drupal.behaviors および-を使用することを忘れないでください jQuery 1回 。
Drupal.behaviors.YOURMODULE = {
attach: function(context, settings) {
$('.your-form-selector', context).once('YOURMODULE').delay(10000).submit();
}
}
これは、'onChange'
配列に'#attributes'
を追加することによる非常に簡単な方法です。
/**
* Custom form handler.
*/
function FORM_EXAMPLE($form, &$form_state) {
$form['complete_projects_radios'] = [
'#type' => 'radios',
'#title' => t('Project status'),
'#default_value' => 0,
'#options' => [
0 => t('Current'),
1 => t('Complete'),
],
// Define the onChange like so:
'#attributes' => [
'onChange' => 'this.form.submit();',
],
];
$form['complete_projects_submit'] = [
'#type' => 'submit',
'#value' => t('Apply'),
// The submit itself is necessary, but now it can be hidden:
'#attributes' => [
'style' => ['display: none;'],
],
];
return $form;
}