Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Автозамена строки в форме (https://javascript.ru/forum/misc/66209-avtozamena-stroki-v-forme.html)

sentance 01.12.2016 13:24

Автозамена строки в форме
 
Задача. Необходимо с ссылки автоматически добавлять значение в форму. К примеру. Клиент заходит на сайт с формой по ссылке http://test.com/forma?email=trest@gmail.com

И автоматически в форме заполняется значение email(trest@gmail.com)
Нашёл решение для WP
function faf_process_user() {
    if (location.search) {
        var URI = location.search;
	
        var parameter = URI.slice(1);
        var var_dict = {};
        var parameters = parameter.split("&");
        for (var i = 0; i < parameters.length; i++) {
            var temp = parameters[i].split("=");
            var_dict[temp[0]] = decodeURIComponent(decodeURIComponent(temp[1]));
        }
        var forms = document.getElementsByTagName('FORM');
        for (var k = 0; k < forms.length; k++) {
            var elements = forms[k].elements;
            for (i = 0; i < elements.length; i++) {
                if (elements[i].tagName || elements[i]) {
                    if (elements[i].id in var_dict ) {
                        elements[i].value = var_dict[elements[i].name];
                    } else if (elements[i].name in var_dict){
                        elements[i].value = var_dict[elements[i].id];
                    }
                }
            }
        }
    }
}
try {
    faf_process_user();
}
catch(err){}


Но почему-то вместо "trest@gmail.com" подставляется "undefined"
Буду очень признателен за ответ.

ksa 01.12.2016 13:28

Цитата:

Сообщение от sentance
Клиент заходит на сайт с формой по ссылке http://test.com/forma?email=trest@gmail.com

И автоматически в форме заполняется значение email(trest@gmail.com)

Серверный язык у тебя есть?
Используй его. ;)
Практически все серверные языки умеют извлекать данные из объектов типа request и вставлять те данные в "тело" страницы.

ksa 01.12.2016 13:29

sentance, либо используй свойства объекта window.location
http://javascript.ru/window-location

sentance 01.12.2016 13:40

Мне б пример работающего кода)

ksa 01.12.2016 14:35

Цитата:

Сообщение от sentance
Мне б пример работающего кода)

А сам значит - фик? :D
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
window.addEventListener('DOMContentLoaded', function() {
	var arr=window.location.search.slice(1).split('&');
	arr=arr[0].split('=');
	document.getElementById(arr[0]).value=arr[1];
});
</script>
</head>
<body>
<label>email
	<input id='email' type='text' />
</label>
</body>
</html>

ksa 01.12.2016 14:37

sentance, у моего примере защит нет. :no:
УРЛ должен четко иметь всего одну переменную
<url>?email=trest@gmail.com

sentance 01.12.2016 16:43

Дружище, от души, Спасибо!) Помогло!


Часовой пояс GMT +3, время: 14:25.