1

非表示フィールドの1つとしてユーザー画面サイズを取得したいと思います。

純粋なHTMLでは、入力値をJavaScriptとして取得できます。例:

document.write(screen.width + " x " + screen.height)

ページの[入力形式]を[完全なhtml]または[phpコード]に設定した場合、コンポーネントの値を-に設定した場合

<script>document.write(screen.width + " x " + screen.height);</script>

SCRIPTタグは省略され、引用符は「」になります。[value]フィールドは安全なHTMLエンティティに変換されているようです。

Drupal WebフォームにJavaScript値を持つ非表示のフォームコンポーネントを追加する方法はありますか?

編集:解決済み:

1 - Copy the original
...sites/all/modules/webform/webform-form.tpl.php 
to
...sites/all/themes/myTheme/webform-form-myFormNodeId.tpl.php 


2 - Add the following lines to webform-form-myFormNodeId.tpl.php

  echo "<script>";
  echo "document.getElementById('edit-submitted-userscreen').value = screen.width + 'x' + screen.height;";
  echo "</script>";


3 - admin/settings/performance : [Clear cached data]

編集:いくつかのPHP値を次のように追加できます

%server[HTTP_USER_AGENT]

JavaScript値を追加するにはどうすればよいですか?

編集2:ノード[入力形式]を[phpコード]と次の[フォームコンポーネント] [値]に変更しようとしましたが、すべてが機能しませんでした。

1 - drupal_add_js(screen.width + " x " + screen.height);
2 - <script>document.write(screen.width + " x " + screen.height);</script>
3 - <?php echo "<script language=\"javascript\">" . "document.write (screen.width + ' x ' + screen.height);" . "</script>"; ?>

4 - full html + 
<script>
jQuery('#edit-submitted-userscreen').val(screen.width + 'x' + screen.height);
</script>
=> in View Page Source, I see:
<input type="hidden" name="submitted[userscreen]" id="edit-submitted-userscreen" value="
jQuery(&#039;#edit-submitted-userscreen&#039;).val(screen.width + &#039;x&#039; + screen.height);


"  />

[SCRIPTタグはNewLineCharに置き換えられます???]

=>フォームに入力すると、元の文字列が記載されたメールが届きます。

userScreen: jQuery('#edit-submitted-userscreen').val(screen.width + 'x' + screen.height);
4

1 に答える 1

2

それは次のように簡単です:

1)フォームに非表示フィールドを定義します。

$form['resolution'] = array(
  '#type' => 'hidden'
);

2)jQueryを使用して値をフィールドに適用します。

$('#edit-resolution').val(screen.width + " x " + screen.height);

編集済み

Full HTMLモードを有効にして、この値をテキストエリアに指定してみてください。

<input type="hidden" name="submitted[userscreen]" id="edit-submitted-userscreen" value="" />

<script>
jQuery('#edit-submitted-userscreen').val(screen.width + 'x' + screen.height);
</script>

2番目の編集

<input type="hidden" name="submitted[userscreen]" id="edit-submitted-userscreen" value="" />
<script>document.getElementById('edit-submitted-userscreen').value = screen.width + 'x' + screen.height;</script>
于 2012-02-15T11:07:54.443 に答える