2012-02-15 2 views
1

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

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

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

Если установить [формат ввода] на странице в [полный HTML] или [код PHP], если я изложу значение компонент -

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

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

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

EDIT: Решено:

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?

Edit 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); 
+0

Второй вариант с помощью сценария, должен работать. –

+0

со вторым вариантом, когда я «просматриваю исходный код», теги SCRIPT опущены, поэтому я получаю внутреннюю строку как значение [document.write (screen.width + «x» + screen.height);] – Atara

+0

Попробуйте положить Формат ввода «Полный HTML», который должен работать. –

ответ

2

Это s simple as:

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

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

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

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

EDITED

Try, чтобы обеспечить это значение для вашего текстового поля с 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> 

ВТОРОЙ EDIT

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

Я добавляю компонент формы с помощью графического интерфейса. Каким должно быть поле [Значение] из этого компонента формы? [$ val (screen.width + "x" + screen.height] – Atara

+0

Извините, не понял, что вы имеете в виду? –

+0

до сих пор я создал формы, используя [form component] [edit ], где я должен написать код, который вы мне предложили? – Atara

Смежные вопросы