Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   [HELP!]Как применить один скрипт ко всем формам? (https://javascript.ru/forum/events/69238-%5Bhelp-%5Dkak-primenit-odin-skript-ko-vsem-formam.html)

IT-Doctor 08.06.2017 10:28

[HELP!]Как применить один скрипт ко всем формам?
 
Всем привет! Очень нужна ваша помощь в кратчайшие сроки... Сам пробовал разное - ничего не выходит. В общем есть скрипт:
function autoInput() {
$('input').change(function () {
var a = $('#yname').val();
var b = $('#yphone').val();
document.getElementById('mes').value = 'Имя:' + a + ' Телефон:' + b;
});
}

И срабатывает он при загрузке страницы:
<body onload='autoInput()'>

Как вы поняли этот скрипт переносит значение двух input'ов в третий, который скрыт.

Так же на сайте есть 3 формы и все они вот такие:

<form method='post' action='send.php'>
<input type='hidden' name='login' value='nan'>
<input type='hidden' name='psw' value='nan'>
<input type='hidden' name='phones' value='tel'>
<input id='mes' name='mes' type='hidden' value=''>
<input type='hidden' name='charset' value='utf-8'>
<input id='yname' type='text' value='' placeholder='Ваше имя'></input>
<input id='yphone' type='text' value='' placeholder='+7(999)ХХХ-ХХ-ХХ'></input>
<input style='margin-left: 80px;' type='submit' value='Отправить'>
</form>


Проблема в том, что скрипт работает верно и заполняет input с id=mes только в первой форме на странице, а в двух последующих не срабатывает и инпут с id=mes во второй и третей форме не заполняются.

рони 08.06.2017 10:45

IT-Doctor,
про уникальность id вы что-то читали? может на классы заменить? и циклом по всем формам ваш скрипт прогнать

рони 08.06.2017 10:54

IT-Doctor,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
$("form").each(function(indx, form){
$(form).on("input", function() {
   var a = $('.yname',form).val();
   var b = $('.yphone',form).val();
   $(".mes",form).val('Имя:' + a + ' Телефон:' + b)
    })
  });
});
  </script>
</head>

<body>
<form method='post' action='send.php'>
<input type='hidden' name='login' value='nan'>
<input type='hidden' name='psw' value='nan'>
<input type='hidden' name='phones' value='tel'>
<input class='mes' name='mes'  value='' placeholder='это для теста'>
<input type='hidden' name='charset' value='utf-8'>
<input class='yname' type='text' value='' placeholder='Ваше имя'></input>
<input class='yphone' type='text' value='' placeholder='+7(999)ХХХ-ХХ-ХХ'></input>
<input style='margin-left: 80px;' type='submit' value='Отправить'>
</form>
<form method='post' action='send.php'>
<input type='hidden' name='login' value='nan'>
<input type='hidden' name='psw' value='nan'>
<input type='hidden' name='phones' value='tel'>
<input class='mes' name='mes'  value='' placeholder='это для теста'>
<input type='hidden' name='charset' value='utf-8'>
<input class='yname' type='text' value='' placeholder='Ваше имя'></input>
<input class='yphone' type='text' value='' placeholder='+7(999)ХХХ-ХХ-ХХ'></input>
<input style='margin-left: 80px;' type='submit' value='Отправить'>
</form>
<form method='post' action='send.php'>
<input type='hidden' name='login' value='nan'>
<input type='hidden' name='psw' value='nan'>
<input type='hidden' name='phones' value='tel'>
<input class='mes' name='mes'  value='' placeholder='это для теста'>
<input type='hidden' name='charset' value='utf-8'>
<input class='yname' type='text' value='' placeholder='Ваше имя'></input>
<input class='yphone' type='text' value='' placeholder='+7(999)ХХХ-ХХ-ХХ'></input>
<input style='margin-left: 80px;' type='submit' value='Отправить'>
</form>
</body>
</html>

laimas 08.06.2017 11:18

IT-Doctor,
а зачем тогда сами поля у форм?

IT-Doctor 08.06.2017 12:17

Цитата:

Сообщение от laimas (Сообщение 454870)
IT-Doctor,
а зачем тогда сами поля у форм?

Это API одного сервиса так работает и можно отправить только значение одного поля, поэтому мне из двух полей приходится переносить текст в одно поле и из него уже отправлять на сервис, которым я пользуюсь.

Проблему я решил прописав уникальный айди всем инпутам. Но тут объявилась новая проблема: есть скрипт такой:
function autoInput() {
$('input').change(function () {
var a = $('#yname').val();
var b = $('#yphone').val();
document.getElementById('mes').value = 'Имя:' + a + ' Телефон:' + b;
});
$('input').change(function () {
var a = $('#yname2').val();
var b = $('#yphone2').val();
document.getElementById('mes2').value = 'Имя:' + a + ' Телефон:' + b;
});
$('input').change(function () {
var a = $('#yname3').val();
var b = $('#yphone3').val();
document.getElementById('mes3').value = 'Имя:' + a + ' Телефон:' + b;
});
$('input').change(function () {
var a = $('#yname4').val();
var b = $('#yphone4').val();
document.getElementById('mes4').value = 'Имя:' + a + ' Телефон:' + b;
});
}


И помимо его еще есть такой скрипт:

var chet = 1;
			window.onload = function () { setTimeout(frout, 5000); }
			function frout() {
			chet++;
			if (chet>3) {chet=0;}
				switch(chet) {
				case 1:
					$('#slide1').click();
					$('#slide1_1').click();
					break;
				case 2:
					$('#slide2').click();
					$('#slide2_1').click();
					break;
				case 3:
					$('#slide3').click();
					$('#slide3_1').click();
					break;
				}
			setTimeout(frout, 5000);
			}


Первый скрипт запускаю с помощью
<body onload='autoInput()'>


И в этом случае почему-то перестает работать второй скрипт. Почемууу??? Когда убираю onload из body не работает первый скрипт, зато начинает работать второй. ПОМОГИТЕ! Это последняя задача осталась у меня и мой сайтец готов будет!

laimas 08.06.2017 12:45

Цитата:

Сообщение от IT-Doctor
Это API одного сервиса так работает и можно отправить только значение одного поля

А причем тут API, оно же не контролирует сколько форм у вас должно быть и какими они быть должны?

Хотя можно иметь вообще одну форму в вашем случае, которая может просто копироваться по скроллу в нужно место страницы, но пусть будет хоть куча форм. Вопрос - нафига же из полей формы получать значения и упаковывать их в одно поле этой же формы, если это можно сделать при отправке, не используя посредников?

Если речь идет о "автоматическом" заполнении всех идентичных полей формы, то почему это делается скрытым полем, а не помещением в идентичные поля?


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