Drupal: Как добавить значение JavaScript в скрытый компонент формы - PullRequest
1 голос
/ 15 февраля 2012

Я хочу получить размер экрана пользователя как одно из моих скрытых полей.

В чистом HTML я могу получить входное значение в виде JavaScript, например ::

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

Если я установлю [input format] страницы на [full html] или [php code], если я установлю значение компонента на -

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

теги SCRIPT опущены, а знаки кавычек становятся ". Кажется, что поле [value] преобразуется в безопасные HTML-сущности.

Есть ли способ добавить скрытый компонент формы со значением JavaScript в веб-формы Drupal?

РЕДАКТИРОВАТЬ: Решено:

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]

Edit: Я могу добавить некоторые значения 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);

1 Ответ

2 голосов
/ 15 февраля 2012

Это так же просто, как:

1) Определите скрытое поле в вашей форме.

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

2) Применить значение с помощью jQuery к вашему полю.

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

EDITED

Попробуйте передать это значение текстовой области с включенным режимом 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>

ВТОРОЕ РЕДАКТИРОВАНИЕ

<input type="hidden" name="submitted[userscreen]" id="edit-submitted-userscreen" value="" />
<script>document.getElementById('edit-submitted-userscreen').value = screen.width + 'x' + screen.height;</script>
...