С Новым годом! Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 8

Несколько web форм на одной странице

11.04.2018, 12:58. Показов 2875. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Знаю что такая тема уже была, но так как я не большой специалист в js, то самостоятельно разобраться не получилось.

Есть чужой код,который обрабатывает 1 форму на странице, а как сделать чтобы работало 2 и более формы одинаковых.

Просто копировать не получается. При попытке отправить вторую или третью форму перенаправляет в пустые поля первой формы.

Сделала запросу разработчику, который писал этот плагин.

Его ответ:
it's possible. in js file check if the #id method is bound to the id of the html element.
you might need to modify the JS or your webform or dont think php needs modications.

Заранее спасибо.


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<form id="WebToLeadForm2" class="WebToLeadForm WebToLeadFormColor form-horizontal"   style="border-radius: 10px; background-color: rgba(19,53,82,0);" action="/thank-you/" method="post" name="WebToLeadForm2">
<div id="first_nameg" class="form-group"><input id="first_name" required title="Ой, кажется, Вы не полностью ввели Ваше имя :( Попробуйте, пожалуйста, еще раз!" class="form-control" name="first_name" size="27" type="text" placeholder="Имя Фамилия" /></div>
<div id="telephoneg" class="form-group"><input type="tel" id="telephone" name="telephone" class="form-control" pattern="8[0-9]{3}[0-9]{3}[0-9]{2}[0-9]{2}" required value="" size="27"  placeholder="8XXXXXXXXXX" title="Ой, кажется, Вы ошиблись - номер должен содержать 11 цифр и начинаться с 8.  Хотим напомнить, что предложение действительно только для Москвы и МО."/></div>
<div id="emailg" class="form-group"><input id="email" class="form-control" name="email" size="27" type="email" placeholder="E-mail..." /></div>
<div id="agreeg" class="form-group">
<input id="send_submit" style="border-radius: 5px; width: 100%; font-family:Roboto; text-align: center; font-size: 18px; background-color:#e43330; padding: 10px 20px;" class="btn btn-danger" name="submit" type="submit" value="Отправить заявку" />
<input id="agree" style="padding-right: 13px; height: auto; margin-left: 5px; font-size: 10px;" checked="checked" name="agree" type="checkbox" value="1" /><span class="agree_color" style="color: #ffffff; font-size: 11px;"> Я согласен(на) на обработку <a class="agree_color" style="color: #ffffff;" href="/policy/">персональных данных</a>. </span><br>
<input id="agree_msk" style="padding-right: 13px; height: auto; margin-left: 5px; float:none; font-size: 10px;" checked="checked" name="agree" type="checkbox" value="1" /><span class="agree_color" style="color: #ffffff; font-size: 11px;"> Мне исполнилось 18 лет и я проживаю в Москве (МО) </span>
<div style="display: none;"><input id="campaign_id" name="campaign_id" type="hidden" value="50grant-4" />
<input id="wsesajkkks90dskjk" name="wsesajkkks90dskjk" type="hidden" value="9f992e0d-7488-93ee-d9a4-47eca202c57c" /></div>
</div>
</form>

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$(function () {
    $(".WebToLeadForm").submit(function (e) {
        ret = true;
        if (!($('#first_name').val()) ) {
            $('#first_nameg').addClass('has-error');
            ret = false;
        } else {
            $('#first_nameg').removeClass('has-error');
        }
        if (!($('#telephone').val()) ) {
            $('#telephoneg').addClass('has-error');
            ret = false;
        } else {
            $('#telephoneg').removeClass('has-error');
        }
        if (!$('#agree').is(':checked')) {
            $('#agreeg').addClass('alert alert-danger');
            ret = false;
        } else {
            $('#agreeg').removeClass('alert alert-danger');
        }
        if(!ret) {
        $('#quizc').carousel(7);
        $("#telephone").focus();
    }
    return ret;
    });
 
   $("input.answer").click(function(){window.setTimeout(function(){$("#quizc").carousel("next");}, 350);});
 
   $("#WebToLeadButton2").click(function(e){
       $('#WebToLeadForm2').toggleClass('hidden-sm');
      $('#WebToLeadForm2').toggleClass('hidden-xs');
   });
 
});
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<?php
 
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
require("quiz.php");
 
register_activation_hook( __FILE__, 'wselead_install' );
add_action('init', 'wsecrm_track');
add_action('init', 'wselead_inject');
add_action('wp_footer', 'wselead_inject_google_tracking');
add_action('the_post', 'wselead_inject_test_results');
add_action('admin_menu', 'wselead_setup_menu');
 
function wselead_setup_menu() 
{
  add_menu_page( 'WSE Leads', 'WSE Leads', 'manage_options', 'wselead', 'wselead_admin' );
}
function wselead_admin()
{
  global $wpdb;
  $table_name = $wpdb->prefix . 'leads';
  $leads = $wpdb->get_results( "SELECT id, tx_id, created_at, first_name, last_name, email, source, source3, source_url, telephone, note, note1, info0, info1, info2, ip FROM $table_name order by id desc limit 100" );
  echo "<h1>Last 100 leads</h1><table border='1'>";
  foreach($leads as $lead) {
    echo  "<tr>";
    echo "<td>" . esc_html($lead->id) . "</td>";
    echo "<td>" . esc_html($lead->tx_id) . "</td>";
    echo "<td>" . esc_html($lead->created_at) . "</td>";
    echo "<td>" . esc_html($lead->first_name) . "</td>";
    echo "<td>" . esc_html($lead->last_name) . "</td>";
    echo "<td>" . esc_html($lead->email) . "</td>";
    echo "<td>" . esc_html($lead->telephone) . "</td>";
    echo "<td>" . esc_html($lead->source) . "</td>";
    echo "<td>" . esc_html($lead->note) . "</td>";
    echo "<td>" . esc_html($lead->info2) . "</td>";
    echo "<td>" . esc_html($lead->ip) . "</td>";
    echo "<td>" . esc_html($lead->source3) . "</td>";
    echo "<td>" . esc_html($lead->source_url) . "</td>";
    echo "<td>" . esc_html($lead->info0) . "</td>";
    echo "<td>" . esc_html($lead->info1) . "</td>";
    echo  "</tr>";
  }
  echo "</table>";
 
}
function wselead_inject()
{
    wp_enqueue_script('wselead', '/wp-content/plugins/wselead/wselead.js', false, false, true);
}
 
function wsecrm_track()
{
 
  if(!isset($_COOKIE["wse_landing_page"]))  {
    setcookie("wse_landing_page", $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 0, '/');
    $_COOKIE["wse_landing_page"] = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
   }
 
  if(!isset($_COOKIE["wse_refer"]) ) {
    setcookie("wse_refer", $_SERVER['HTTP_REFERER'], 0, '/');
    $_COOKIE["wse_refer"] = $_SERVER['HTTP_REFERER'];
  }
 
  wsecrm_insert();
}
$wselead_insert=0;
function wsecrm_insert()
{
    global $wselead_insert;
     if(!isset( $_POST['wsesajkkks90dskjk']) )
         return;
 
   global $wpdb;
   $table_name = $wpdb->prefix . 'leads';
   $values = array(       
       'created_at' => current_time( 'mysql' ), 
       'updated_at' => current_time( 'mysql' ),
       'note1' =>  serialize($_REQUEST),
       'tx_id' => 1
   );
   $values['source3'] = isset($_COOKIE["wse_landing_page"]) ? $_COOKIE["wse_landing_page"] : $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
   $values['source_url'] = isset($_COOKIE["wse_refer"]) ? $_COOKIE["wse_refer"] :  $_SERVER['HTTP_REFERER']; 
 
   $values['ip'] = getenv('HTTP_CLIENT_IP')?:
getenv('HTTP_X_FORWARDED_FOR')?:
getenv('HTTP_X_FORWARDED')?:
getenv('HTTP_FORWARDED_FOR')?:
getenv('HTTP_FORWARDED')?:
getenv('REMOTE_ADDR');
 
   $post_fields = array(
       'source' => "campaign_id", 
       'first_name' =>"first_name",
       'last_name' =>"last_name",
       'telephone' => "telephone",
       'email' => "email",
       'first_name' => "first_name",
       'note' => 'note',
       'info0' => 'consultant-link',
       'info1' => 'user-link',
       'info2' => 'info2'
   );
   foreach($post_fields as $sql_field => $post_field)
      if(isset($_POST[$post_field]))
        $values[$sql_field] =  sanitize_text_field($_POST[$post_field]);
 
   $wpdb->insert($table_name, $values);
   if(isset($values['telephone']) && strlen($values['telephone'])>=7 )
      $wselead_insert = 1; // lead inserted success
 
 
}
function wselead_inject_test_results()
{
    global $wselead_insert;
     if(!isset( $_POST['wsesajkkks90dskjk']) )
         return;
     if($_POST['wsesajkkks90dskjk']!='quiz-0120912as=1290')
         return;
     $quiz = new Quiz();
     echo $quiz->check();     
     
}
function wselead_inject_google_tracking()
{
    global $wselead_insert;
     if(!isset( $_POST['wsesajkkks90dskjk']) || !isset($wselead_insert) )
         return;
     if($wselead_insert!=1)
         return;
 
  echo '<script type="text/javascript">
$(function(){
  var ig = new Image(1,1);ig.src = "http://www.googleadservices.com/pagead/conversion/1051016378/?label=apEqCLKQeRC6-ZT1Aw&script=0";  
  dataLayer.push({"event": "SendMainForm"});
  
})</script>';
}
 
 
function wselead_install() {
  global $wpdb;
  global $wselead_db_version;
  $table_name = $wpdb->prefix . 'leads';
 
  $sql = "CREATE TABLE `$table_name` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(255) DEFAULT NULL,
  `last_name` varchar(255) DEFAULT NULL,
  `telephone` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `info0` varchar(255) DEFAULT NULL,
  `info1` varchar(255) DEFAULT NULL,
  `info2` varchar(255) DEFAULT NULL,
  `ip` varchar(255) DEFAULT NULL,
  `source` text,
  `source3` text,
  `source_url` text,
  `source_refer_url` text,
  `note` text,
  `note1` text,
  `tx_at` datetime DEFAULT NULL,
  `tx_id` int(11) DEFAULT '0',
  `ch_id` int(11) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
  require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
  dbDelta( $sql );
 
  add_option( 'wselead_db_version', '1.0');
}
 
 
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' ); 
 
?>
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.04.2018, 12:58
Ответы с готовыми решениями:

Несколько форм обратной связи на одной странице
Всем привет. Уже долгое время мучаюсь, никак не могу найти готовое решение, а собственных знаний js столь мало, что они никак не...

несколько форм на странице с одним submit?
Парни, подскажите, плиз. Есть несколько форм на странице с одним submit для всех, к примеру куча форм с классом dadada. Так когда я...

Обработка двух форм на одной странице
Здравствуйте, форумчане! На странице две формы, заполняю первую, данные уходят ajax’ом, в ответ приходит id новой записи ajax’ом, это id ...

18
1 / 1 / 1
Регистрация: 04.03.2015
Сообщений: 22
11.04.2018, 13:25
Добрый день!
В js идет поиск элементов по идентификатору.
Вы можете модифицировать html-код формы, добавить к элементам классы. А также модифицировать js-код и сделать селекторы по классу, а не по id

Добавлено через 49 секунд
php здесь и, правда, ни при чем, как и написал разработчик
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 8
11.04.2018, 13:45  [ТС]
Добрый день!

А вы не могли бы подсказать к каким элементам нужно добавить класс, так как я уже даже id всех инпутов меняла на классы и ничего не вышло. Тогда вообще не работают ни одна форма(((

пробовала убрать id формы и оставить только класс, тоже не работает.
Просто перекидывает в верхнюю форму снова.

спасибо
0
1 / 1 / 1
Регистрация: 04.03.2015
Сообщений: 22
11.04.2018, 15:03
Давайте попробуем заменить все id (элементов) на классы:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<form id="WebToLeadForm2" class="WebToLeadForm WebToLeadFormColor form-horizontal"   style="border-radius: 10px; background-color: rgba(19,53,82,0);" action="/thank-you/" method="post" name="WebToLeadForm2">
<div class="first_nameg" class="form-group"><input class="first_name" required title="Ой, кажется, Вы не полностью ввели Ваше имя :( Попробуйте, пожалуйста, еще раз!" class="form-control" name="first_name" size="27" type="text" placeholder="Имя Фамилия" /></div>
<div class="telephoneg" class="form-group"><input type="tel" class ="telephone" name="telephone" class="form-control" pattern="8[0-9]{3}[0-9]{3}[0-9]{2}[0-9]{2}" required value="" size="27"  placeholder="8XXXXXXXXXX" title="Ой, кажется, Вы ошиблись - номер должен содержать 11 цифр и начинаться с 8.  Хотим напомнить, что предложение действительно только для Москвы и МО."/></div>
<div class="emailg" class="form-group"><input class="email" class="form-control" name="email" size="27" type="email" placeholder="E-mail..." /></div>
<div class="agreeg" class="form-group">
<input class="send_submit" style="border-radius: 5px; width: 100%; font-family:Roboto; text-align: center; font-size: 18px; background-color:#e43330; padding: 10px 20px;" class="btn btn-danger" name="submit" type="submit" value="Отправить заявку" />
<input class="agree" style="padding-right: 13px; height: auto; margin-left: 5px; font-size: 10px;" checked="checked" name="agree" type="checkbox" value="1" /><span class="agree_color" style="color: #ffffff; font-size: 11px;"> Я согласен(на) на обработку <a class="agree_color" style="color: #ffffff;" href="/policy/">персональных данных</a>. </span><br>
<input id="agree_msk" style="padding-right: 13px; height: auto; margin-left: 5px; float:none; font-size: 10px;" checked="checked" name="agree" type="checkbox" value="1" /><span class="agree_color" style="color: #ffffff; font-size: 11px;"> Мне исполнилось 18 лет и я проживаю в Москве (МО) </span>
<div style="display: none;"><input id="campaign_id" name="campaign_id" type="hidden" value="50grant-4" />
<input id="wsesajkkks90dskjk" name="wsesajkkks90dskjk" type="hidden" value="9f992e0d-7488-93ee-d9a4-47eca202c57c" /></div>
</div>
</form>
Далее в js-коде прикрепим событие submit не к форме, а к input:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$(function () {
    $(".send_submit").on("click", function (e) {
        ret = true;
var form = $(event.target).closest("form");
        if (!($(form).find('.first_name').val()) ) {
            $(from).find('.first_nameg').addClass('has-error');
            ret = false;
        } else {
            $(form).find('.first_nameg').removeClass('has-error');
        }
        if (!($(form).find('.telephone').val()) ) {
            $(form).find('.telephoneg').addClass('has-error');
            ret = false;
        } else {
            $(form).find('.telephoneg').removeClass('has-error');
        }
        if (!$(form).find('.agree').is(':checked')) {
            $(form).find('.agreeg').addClass('alert alert-danger');
            ret = false;
        } else {
            $(form).find('.agreeg').removeClass('alert alert-danger');
        }
        if(!ret) {
        $('#quizc').carousel(7);
        $("#telephone").focus();
    }
    return ret;
    });
 
   $("input.answer").click(function(){window.setTimeout(function(){$("#quizc").carousel("next");}, 350);});
 
   $("#WebToLeadButton2").click(function(e){
       $('#WebToLeadForm2').toggleClass('hidden-sm');
      $('#WebToLeadForm2').toggleClass('hidden-xs');
   });
 
});
Добавлено через 1 минуту
Последний код:
JavaScript
1
2
3
4
 $("#WebToLeadButton2").click(function(e){
       $('#WebToLeadForm2').toggleClass('hidden-sm');
      $('#WebToLeadForm2').toggleClass('hidden-xs');
   });
Не вижу, где эта кнопка..

Добавлено через 57 минут
Ну что, помогло?
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 8
11.04.2018, 15:07  [ТС]
Спасибо, заменила, но вообще не работает, даже не отправляется форма, в связи с этим закрались сомнения, может ли быть такое, что оригинальный js лежит в файлах плагина (сайт на wordpress), а я пытаюсь сделать изменения на конкретной странице путем вписывания нового js в редактор Head & Footer Code для этой страницы.

Для стилей css все что я туда вписываю имеет приорирет перед основным файлом style.css, но работает ли это и для js?

Если да, то тогда я

Цитата Сообщение от newwebber Посмотреть сообщение
Последний код:
JavascriptВыделить код
1
2
3
4
*$("#WebToLeadButton2").click(function(e ){
* * * *$('#WebToLeadForm2').toggleClass('hidde n-sm');
* * * $('#WebToLeadForm2').toggleClass('hidden-xs');
* *});
Не вижу, где эта кнопка..
Я тоже не нашла эту кнопку, наверное разработчик где-то на сайте еще оставил форму с этой кнопкой.
0
1 / 1 / 1
Регистрация: 04.03.2015
Сообщений: 22
11.04.2018, 15:16
бросьте ссылку, я посмотрю

Добавлено через 26 секунд
на страничку с формами

Добавлено через 4 минуты
По идее, править надо файл плагина. А так должен получиться дубликат. Файл плагина же тоже подключен.
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 8
11.04.2018, 15:23  [ТС]
https://www.wallstreetenglish.ru/offer-50grant/

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

Трафик очень высокий, если менять сам файл плагина, то тогда нужно сразу же все формы на сайте обновлять.
А это ручная работа((

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

Еще вариант... может потестить на другом сайте, где нет это плагина.
Но тогда я не смогу проверить отправилась ли заявка в базу срм.

Спасибо еще раз!)
0
1 / 1 / 1
Регистрация: 04.03.2015
Сообщений: 22
11.04.2018, 15:57
Тут дело не в том скрипте, что вы выложили. За логику отвечает другой скрипт. Поэтому наши манипуляции и не прокатили.
0
 Аватар для sash23
563 / 410 / 259
Регистрация: 31.05.2016
Сообщений: 1,105
11.04.2018, 16:07
newwebber,
ReferenceError: event is not defined

event заменить на e
или использовать this
0
1 / 1 / 1
Регистрация: 04.03.2015
Сообщений: 22
11.04.2018, 22:01
А если id-шники оставляем, то форма хотя бы одна работает на этой странице?

Добавлено через 3 часа 55 минут
Попробуйте вот так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$(function () {
    $(".WebToLeadForm").submit(function (e) {
        ret = true;
        if (!($(this).find('.first_name').val()) ) {
            $(this).find('.first_nameg').addClass('has-error');
            ret = false;
        } else {
            $(this).find('.first_nameg').removeClass('has-error');
        }
        if (!($(this).find('.telephone').val()) ) {
            $(this).find('.telephoneg').addClass('has-error');
            ret = false;
        } else {
            $(this).find('.telephoneg').removeClass('has-error');
        }
        if (!$(this).find('.agree').is(':checked')) {
            $(this).find('.agreeg').addClass('alert alert-danger');
            ret = false;
        } else {
            $(this).find('.agreeg').removeClass('alert alert-danger');
        }
        if(!ret) {
        $('#quizc').carousel(7);
        $("#telephone").focus();
    }
    return ret;
    });
 
   $("input.answer").click(function(){window.setTimeout(function(){$("#quizc").carousel("next");}, 350);});
 
   $("#WebToLeadButton2").click(function(e){
       $('#WebToLeadForm2').toggleClass('hidden-sm');
      $('#WebToLeadForm2').toggleClass('hidden-xs');
   });
 
});
я так понимаю, при правильном заполнении формы, идет перенаправление на страницу /thank-you/, а значения заполненных полей записываются в базу.
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 8
12.04.2018, 01:43  [ТС]
да, если id оставить, то первая форма работает и данные отправляются.

Попробовала с классами вообще ни одна не работает(((
0
1 / 1 / 1
Регистрация: 04.03.2015
Сообщений: 22
12.04.2018, 12:35
А вы скрипт этот вообще сейчас убрали?

Добавлено через 17 минут
Вот я залила к себе на сервер. Поставила только те скрипты, что есть на главной.
http://techpodderzhki.net/worldstreet.html
Все работает...

Добавлено через 2 минуты
Како-то скрипт на вашей странице портит всю малину
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 8
12.04.2018, 12:45  [ТС]
Я попробовала перенести в header, подумала вдруг приоритет будет выше перед основным скриптом плагина.
Но толку все равно нет.

Как можно понять какой именно скрипт все портит?

А если поменять полностью названия классов в форме и в скрипте, на тот случай если левый скрипт перехватывает по классу или id?
0
1 / 1 / 1
Регистрация: 04.03.2015
Сообщений: 22
12.04.2018, 14:48
Наш скрипт и скрипт оригинала конфликтуют.
Можно добавить наш код в оригинал и все должно работать )

Добавлено через 37 секунд
В нашем скрипте и в скрипте оригинала один и тот же класс у формы

Добавлено через 1 минуту
Если только поменять класс форм на странице и прикрутить к ним наш скрипт

Добавлено через 3 минуты
Вот в как-то так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
form.submit(function(e){
        ret = true;
        if (!($('#first_name').val())){
            $('#first_nameg').addClass('has-error');
            ret = false;
        } else {
            $('#first_nameg').removeClass('has-error');
        }
        if (!($('#telephone').val())){
            $('#telephoneg').addClass('has-error');
            ret = false;
        } else {
            $('#telephoneg').removeClass('has-error');
        }
        if (!$('#agree').is(':checked')){
            $('#agreeg').addClass('alert alert-danger');
            ret = false;
        } else {
            $('#agreeg').removeClass('alert alert-danger');
        }
if (!($(this).find('.first_name').val()) ) {
            $(this).find('.first_nameg').addClass('has-error');
            ret = false;
        } else {
            $(this).find('.first_nameg').removeClass('has-error');
        }
        if (!($(this).find('.telephone').val()) ) {
            $(this).find('.telephoneg').addClass('has-error');
            ret = false;
        } else {
            $(this).find('.telephoneg').removeClass('has-error');
        }
        if (!$(this).find('.agree').is(':checked')) {
            $(this).find('.agreeg').addClass('alert alert-danger');
            ret = false;
        } else {
            $(this).find('.agreeg').removeClass('alert alert-danger');
        }
        if (!ret){
            $('#quizc').carousel(7);
            $("#telephone").focus();
        }
        return ret;
    });
Добавлено через 9 минут
Это я в оригинал вставила наш код с классами

Добавлено через 1 час 7 минут
Тот вариант не сработал...
Подправила. Теперь у меня работает..))
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
form.submit(function(e){
        ret = true;
        if (((typeof($('#first_name').val()) != "undefined" && $('#first_name').val() !== null) && !($('#first_name').val())) || !($(this).find('input.first_name').val()) ){
            $('#first_nameg').addClass('has-error');
 
            $(this).find('.first_nameg').addClass('has-error');
            ret = false;
        } else {
            $('#first_nameg').removeClass('has-error');
            $(this).find('.first_nameg').removeClass('has-error');
        }
        if (((typeof($('#telephone').val()) != "undefined" && $('#telephone').val() !== null) && !($('#telephone').val())) || !($(this).find('input.telephone').val())){
            $('#telephoneg').addClass('has-error');
            $(this).find('.telephoneg').addClass('has-error');
            ret = false;
        } else {
            $('#telephoneg').removeClass('has-error');
            $(this).find('.telephoneg').removeClass('has-error');
        }
        if (((typeof($('#agree').val()) != "undefined" && $('#agree').val() !== null) && !$('#agree').is(':checked')) || !$(this).find('input.agree').is(':checked')){
            $('#agreeg').addClass('alert alert-danger');
            $(this).find('.agreeg').addClass('alert alert-danger');
            ret = false;
        } else {
            $('#agreeg').removeClass('alert alert-danger');
            $(this).find('.agreeg').removeClass('alert alert-danger');
        }
        if (!ret){
            $('#quizc').carousel(7);
            $("#telephone").focus();
        }
        return ret;
    });
Добавлено через 34 минуты
еще подправила...)))
Теперь на всех страницах должно работать (и с id и с классами)
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
form.submit(function(e){
        ret = true;
        if (((typeof($('#first_name').val()) != "undefined" && $('#first_name').val() !== null) && !($('#first_name').val())) || ((typeof($('input.first_name').val()) != "undefined" && $('input.first_name').val() !== null) && !($(this).find('input.first_name').val()) ) ){
            $('#first_nameg').addClass('has-error');
 
            $(this).find('.first_nameg').addClass('has-error');
            ret = false;
        } else {
            $('#first_nameg').removeClass('has-error');
            $(this).find('.first_nameg').removeClass('has-error');
        }
        if (((typeof($('#telephone').val()) != "undefined" && $('#telephone').val() !== null) && !($('#telephone').val())) || ( (typeof($('input.telephone').val()) != "undefined" && $('input.telephone').val() !== null) &&!($(this).find('input.telephone').val()) ) ){
            $('#telephoneg').addClass('has-error');
            $(this).find('.telephoneg').addClass('has-error');
            ret = false;
        } else {
            $('#telephoneg').removeClass('has-error');
            $(this).find('.telephoneg').removeClass('has-error');
        }
        if (((typeof($('#agree').val()) != "undefined" && $('#agree').val() !== null) && !$('#agree').is(':checked')) ||
        ((typeof($('input.agree').val()) != "undefined" && $('input.agree').val() !== null) !$(this).find('input.agree').is(':checked') ) ){
            $('#agreeg').addClass('alert alert-danger');
            $(this).find('.agreeg').addClass('alert alert-danger');
            ret = false;
        } else {
            $('#agreeg').removeClass('alert alert-danger');
            $(this).find('.agreeg').removeClass('alert alert-danger');
        }
        if (!ret){
            $('#quizc').carousel(7);
            $("#telephone").focus();
        }
        return ret;
    });
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 8
12.04.2018, 17:15  [ТС]
Я вас уже замучила((( вы не могли бы посмотреть на тот лэнд. Правильно ли я все вставила.

Вернула изначальную форму с id и последний вариант скрипта.

Не работает(((

есть мысль попробовать вставить скрипт в оригинальный файл плагина, это смогу сделать ближе к ночи, когда трафик будет минимальный. других мыслей нет уже....
0
1 / 1 / 1
Регистрация: 04.03.2015
Сообщений: 22
12.04.2018, 19:00
Лучший ответ Сообщение было отмечено Zoren9ka как решение

Решение

Я доработала скрипт:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
form.submit(function(e){
        ret = true;
        if (((typeof($('#first_name').val()) != "undefined" && $('#first_name').val() !== null) && !($('#first_name').val())) || ((typeof($('input.first_name').val()) != "undefined" && $('input.first_name').val() !== null) && !($(this).find('input.first_name').val()) ) ){
            $('#first_nameg').addClass('has-error');
 
            $(this).find('.first_nameg').addClass('has-error');
            ret = false;
        } else {
            $('#first_nameg').removeClass('has-error');
            $(this).find('.first_nameg').removeClass('has-error');
        }
        if (((typeof($('#telephone').val()) != "undefined" && $('#telephone').val() !== null) && !($('#telephone').val())) || ( (typeof($('input.telephone').val()) != "undefined" && $('input.telephone').val() !== null) &&!($(this).find('input.telephone').val()) ) ){
            $('#telephoneg').addClass('has-error');
            $(this).find('.telephoneg').addClass('has-error');
            ret = false;
        } else {
            $('#telephoneg').removeClass('has-error');
            $(this).find('.telephoneg').removeClass('has-error');
        }
        if (((typeof($('#agree').val()) != "undefined" && $('#agree').val() !== null) && !$('#agree').is(':checked')) ||
        ((typeof($('input.agree').val()) != "undefined" && $('input.agree').val() !== null) && !$(this).find('input.agree').is(':checked') ) ){
            $('#agreeg').addClass('alert alert-danger');
            $(this).find('.agreeg').addClass('alert alert-danger');
            ret = false;
        } else {
            $('#agreeg').removeClass('alert alert-danger');
            $(this).find('.agreeg').removeClass('alert alert-danger');
        }
        if (!ret){
            $('#quizc').carousel(7);
            $("#telephone").focus();
        }
        return ret;
    });
У меня на странице работает.
Сейчас гляну вашу.
Но!
Одновременно два скрипта работать не будут.
Либо вот этот вариант. Им, в принципе, можно заменить оригинал.
Либо оригинал (но с оригиналом несколько форм на одной странице работать не будут).

Добавлено через 10 минут
Вот в этом коде:
JavaScript
1
2
3
4
5
6
 if (((typeof($('#agree').val()) != "undefined" && $('#agree').val() !== null) && !$('#agree').is(':checked')) ||
        ((typeof($('input.agree').val()) != "undefined" && $('input.agree').val() !== null) && !$(this).find('input.agree').is(':checked') ) ){
            $('#agreeg').addClass('alert alert-danger');
            $(this).find('.agreeg').addClass('alert alert-danger');
            ret = false;
        } else {
добавьте && между:
JavaScript
1
"undefined" && $('input.agree').val() !== null)
и
JavaScript
1
 !$(this).find('input.agree').is(':checked'))){
1
 Аватар для sash23
563 / 410 / 259
Регистрация: 31.05.2016
Сообщений: 1,105
12.04.2018, 22:00
newwebber,

JavaScript
1
if (((typeof($('#first_name').val()) != "undefined" && $('#first_name').val() !== null) && !($('#first_name').val())) || ((typeof($('input.first_name').val()) != "undefined" && $('input.first_name').val() !== null) && !($(this).find('input.first_name').val()) ) ){
к чему такие сложности?
0
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 8
13.04.2018, 02:18  [ТС]
Спасибо большое!!! Попробовала на другом сайте. Все работает.
Осталось проверить на этом злосчастном (жду когда посетителей будет меньше) и будет всем счастье!!!

Добавлено через 3 часа 9 минут
Загрузила ваш скрипт вместо оригинального.

Работает!!!! и интересная штука, страницы где форма одна - все работает как обычно (код формы прежний),
а на странице, где 2 и более форм, сработало только при добавлении <input id="" name="" type="hidden" value="undefined"> в конце формы, который вы добавили в код формы.

СПАСИБО!!! Вы мой герой!!
0
1 / 1 / 1
Регистрация: 04.03.2015
Сообщений: 22
13.04.2018, 10:32
Это единственный способ, который я знаю, для проверки на существование переменной, аналог isset в php.
Я знаю, что способ далеко не элегантный.
Если знаете другой, подскажите, пожалуйста, на будущее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.04.2018, 10:32
Помогаю со студенческими работами здесь

Несколько форм на одной странице
Здравствуйте! Типа страницу регистрации, в которой есть две разные формы(для пациентов и врачей) разделенные nav-tab'ами. В зависимости...

Несколько форм на одной странице Yii2
Я добавляю 4 формы на страницу. Но получаю ошибку &quot;Call to a member function isAttributeRequired() on a non-object&quot;. Я так понимаю Yii...

Несколько однообразный форм на одной странице. Обработка
Опять буду надоедать людям)) Есть список чего-то. Пусть будет книг, например. Этот список выводится из модели Book. Для каждого поля...

Несколько форм обратной связи на одной странице
Всем доброго времени суток. Не могу настроить на лендинге несколько форм обратной связи. Одна работает при копировании кода, а другие...

Несколько форм html на одной странице и на один обработчик php
Всем привет! Если кто сможет помочь, буду очень признателен. Дело вот в чем: Есть страница сайта, на которой находится несколько форм...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru