Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.06.2017, 10:28
Новичок на форуме
Отправить личное сообщение для IT-Doctor Посмотреть профиль Найти все сообщения от IT-Doctor
 
Регистрация: 05.06.2017
Сообщений: 8

[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 во второй и третей форме не заполняются.
Ответить с цитированием
  #2 (permalink)  
Старый 08.06.2017, 10:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

IT-Doctor,
про уникальность id вы что-то читали? может на классы заменить? и циклом по всем формам ваш скрипт прогнать
Ответить с цитированием
  #3 (permalink)  
Старый 08.06.2017, 10:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>
Ответить с цитированием
  #4 (permalink)  
Старый 08.06.2017, 11:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

IT-Doctor,
а зачем тогда сами поля у форм?
Ответить с цитированием
  #5 (permalink)  
Старый 08.06.2017, 12:17
Новичок на форуме
Отправить личное сообщение для IT-Doctor Посмотреть профиль Найти все сообщения от IT-Doctor
 
Регистрация: 05.06.2017
Сообщений: 8

Сообщение от laimas Посмотреть сообщение
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 не работает первый скрипт, зато начинает работать второй. ПОМОГИТЕ! Это последняя задача осталась у меня и мой сайтец готов будет!

Последний раз редактировалось IT-Doctor, 08.06.2017 в 12:27.
Ответить с цитированием
  #6 (permalink)  
Старый 08.06.2017, 12:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

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

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


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Применить ко всем элементам кроме текущего. Dimaz jQuery 7 02.06.2013 17:47
Всем привет. Скрипт который сравнивает данные сайта с данными в базе.. strengerst Opera, Safari и др. 6 24.06.2012 22:17
много <div> а скрипт один DimaRogov Events/DOM/Window 9 17.09.2011 18:11
Скрипт поиска по всем страницам сайта Mike1983 Firefox/Mozilla 2 13.05.2011 19:09
Как применить css ко всем элементам внутри блока MaxB jQuery 12 28.05.2010 07:56