Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Непонятный конфликт (https://javascript.ru/forum/events/26148-neponyatnyjj-konflikt.html)

kowalsky 27.02.2012 23:40

Непонятный конфликт
 
Привет всем.

Пытаюсь сделать отправку формы, после появления на странице двух других скриптов, форма перестала отправляться.

Пожалуйста разъясните мне почему конфликтуют эти скрипты и как этого избежать:

<script>

$(document).ready(function(){ $("#contactform").validate(); $.extend($.validator.messages, { required: "Поле не заполнено" }); });

function look(type){
param=document.getElementById(type);
if(param.style.display == "none") param.style.display = "block";
else param.style.display = "none"
}

function hide(type){
param=document.getElementById(type);
if(param.style.display == "none") param.style.display = "block";
else param.style.display = "none"
}
</script>

Спасибо.

devote 27.02.2012 23:44

var param=document.getElementById(type);

kowalsky 27.02.2012 23:49

Спасибо. Но к сожалению не помогло.

Rootpassword 27.02.2012 23:53

Давайте остальное. Ну две функции, проблем не вижу, кроме той, что devote описал.

kowalsky 28.02.2012 01:09

больше ничего нет.

Если я например вот это "$(document).ready(function(){ $("#contactform").validate(); $.extend($.validator.messages, { required: "Поле не заполнено" }); });" удаляю, все прекрасно работает, правда без валидации))

Если удаляю "function look(type){
param=document.getElementById(type);
if(param.style.display == "none") param.style.display = "block";
else param.style.display = "none"
}

function hide(type){
param=document.getElementById(type);
if(param.style.display == "none") param.style.display = "block";
else param.style.display = "none"
}"

То тоже все отправляется, только вод скрытые подсказки перестают работать)

devote 28.02.2012 02:10

возможно конфликт в именах функций... попробуй переименовать hide и look во что нить другое.

kowalsky 28.02.2012 14:55

Попробовал изменить, ничего не изменилось
Теперь так:

<script>

$(document).ready(function(){ $("#contactform").validate(); $.extend($.validator.messages, { required: "Поле не заполнено" }); });

function pokaz(type){
var param=document.getElementById(type);
if(param.style.display == "none") param.style.display = "block";
else param.style.display = "none"
}

function skrit(type){
var param=document.getElementById(type);
if(param.style.display == "none") param.style.display = "block";
else param.style.display = "none"
}

devote 28.02.2012 15:05

судя по всему валидатор изменяет форму/элементы над которыми он манипулирует и все ранее повешенные события теряют свою актуальность.

kowalsky 28.02.2012 15:37

Скажите пожалуйста как поправить, второй день меня это держит, не могу доделать форму.

Rootpassword 28.02.2012 15:51

Еще раз предлагаю-написать все в сообщении. форму, валидатор, лог работы.

kowalsky 28.02.2012 16:38

Я оставил только одно поле формы, чтобы не городить тут код необъятный.


<?
//Если форма отправлена
if(isset($_POST['submit'])) {

//Проверка Поля Фамилия латинскими
if(trim($_POST['fam']) == '') {
$hasError = true;
} else {
$name = trim($_POST['fam']);
}

//Если ошибок нет, отправить email
if(!isset($hasError)) {
$emailTo = 'емейл адрес'; //Сюда введите Ваш email
$body = "$tema";
$headers = 'Request:' ."\r\n\r\n". 'Фамилия туриста: '.$fam.'';

mail($emailTo, $body, $headers);
$emailSent = true;
}
}

?>

<script src="989/jquery.min.js" type="text/javascript"></script>
<script src="989/jquery.validate.pack.js" type="text/javascript"></script>

<script>


$(document).ready(function(){ $("#contactform").validate(); $.extend($.validator.messages, { required: "Поле не заполнено" }); });

function pokaz(type){
var param=document.getElementById(type);
if(param.style.display == "none") param.style.display = "block";
else param.style.display = "none"
}

function skrit(type){
var param=document.getElementById(type);
if(param.style.display == "none") param.style.display = "block";
else param.style.display = "none"
}
</script>

<?php if(isset($emailSent) && $emailSent == true) { //Если письмо отправлено ?>
<div id="apDiv2">
<p align="center" style="background-color: #50f52a;">Заказ на оформление успешно отправлен. Спасибо за использование автоматической формы! Мы ответим вам в кратчайшие сроки.<br />
</p><?php } ?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="contactform">

<input name="fam" type="text" class="required" id="textfield5" />

</form>

melky 28.02.2012 23:18

1. неверно используете плагин валидации

$(document).ready(function(){ $("#contactform").validate(); $.extend($.validator.messages, { required: "Поле не заполнено" }); });

http://jsfiddle.net/KQZ3N/1/

я добавил только кнопку отправки, свежее Jquery и свежую версия плагина.

Как видите, там всё хорошо, то есть со скриптом всё в порядке. идём дальше.

2. в php в самом начале
die($_POST);

Если видите, что что-то отослалось с формы - ищите проблемы в php скрипте.

kowalsky 29.02.2012 15:01

Спасибо за помощь. Решил в итоге разделить на две страницы :) Проблема исчезла.


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