Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Пролиставшие страницы после добавления
 
 автор: TetRiska   (08.09.2009 в 00:59)   письмо автору
 
 

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

В хтмл вставляю жабоскрипт
<title>Документ без названия</title>
  <script type="text/javascript">
    function showIt(elID)
    {
      var el = document.getElementById(elID);
      el.scrollIntoView(true);
    }
  </script>
</head>
<body>
.......

Сюда должно пролистать после добавления
$goods .= "<b>Комментарии:</b><div id='pToShow'></div>";

Обработчик со сбросом ПОСТ
........
header("location: ".DOMEN."/gallery/category/".$_GET['id']."/commodity/".$_GET['id_category']."");

Форма добавления
$goods .= "<div style='margin-top:3px'>Введите имя:<br /><input class='form_z' size='50' name='comm_name' id='comm_name' type='text' value='".$comm_name."'/></div>";
$goods .= "<div style='margin-top:3px'>Введите E-mail:<br /><input class='form_z' size='50' name='comm_email' type='text' value='".$comm_email."'/></div>";
$goods .= "<div style='margin-top:3px'>Введите сообщение:<br /><textarea class='form_z' name='comm_text' cols='40' rows='5'>".$comm_text."</textarea></div>";
$goods .= "<div style='margin-top:3px'><input onclick='submit();showIt('pToShow');' name='add' type='image' src='".DOMEN."/images/add.gif' title='Добавить комментарий' /></div>";

Такой ход неверен, пролистывание происходит до добавления, как сделать верно, что за чем? Буду благодарен за помощь.

  Ответить  
 
 автор: TetRiska   (08.09.2009 в 13:50)   письмо автору
 
   для: TetRiska   (08.09.2009 в 00:59)
 

есть предложения?

  Ответить  
 
 автор: Lelik   (08.09.2009 в 14:10)   письмо автору
 
   для: TetRiska   (08.09.2009 в 00:59)
 

$goods .= "<b>Комментарии:</b><div id='pToShow'><a name="coments"></a></div>";



header("location: ".DOMEN."/gallery/category/".$_GET['id']."/commodity/".$_GET['id_category']."#coments");

  Ответить  
 
 автор: TetRiska   (09.09.2009 в 01:05)   письмо автору
 
   для: Lelik   (08.09.2009 в 14:10)
 

Срабатывает спасибо, но:

1 -
$goods .= "<div style='margin-top:3px'><input onclick='submit(); showIt('pToShow');' name='add' type='image' src='".DOMEN."/images/add.gif' title='Добавить комментарий' /></div>";
здесь ошибка в ИЕ
Webpage error details
Message: Syntax error
Line: 183
Char: 1
Code: 0
URI: http://10.100.20.227/gallery/category/16/commodity/60

2 - не хотелось бы, чтобы в конец дописывало #coments, можно ли обойтись?

  Ответить  
 
 автор: Lelik   (09.09.2009 в 01:29)   письмо автору
 
   для: TetRiska   (09.09.2009 в 01:05)
 

1.

onclick='submit(); showIt('pToShow');' - не правильно
onclick=\"submit(); showIt('pToShow');\" - правильно


2. Можно. Алгоритм такой: ищем по айди блок, в котором находятся комментарии, вычисляем его координаты от левого верхнего угла страницы, прокручиваем на полученную высоту

  Ответить  
 
 автор: TetRiska   (09.09.2009 в 02:15)   письмо автору
 
   для: Lelik   (09.09.2009 в 01:29)
 

допустим блок остался такой же:
$goods .= "<b>Комментарии:</b><div id='pToShow'></div>";

вот ф-ция написана в темах выше вами же:
function getAbsoluteCoords(oElement){
    var oResult = {
        iTop  : 0,
        iLeft : 0
        };
    while(oElement) {
        oResult.iTop += oElement.offsetTop;
        oResult.iLeft += oElement.offsetLeft;
        oElement = oElement.offsetParent;
    }
    return oResult;

Диву назначить на событие getAbsoluteCoords(this).iTop или как? И как прокрутить после того как узнали координату?

  Ответить  
 
 автор: Lelik   (09.09.2009 в 03:46)   письмо автору
 
   для: TetRiska   (09.09.2009 в 02:15)
 

примерно так:

function Func() {
    var oElem = document.getElementById('pToShow');
    var oCoords = getAbsoluteCoords(oElem);

    if( !isIe() )
        scrollTo( 0, oCoords.iTop );
    else
        document.body.scrollTop = oCoords.iTop+'px';
}


проверку на ИЕ или не ИЕ надо написать самому, я для упрощения написал вызов функции isIe()

  Ответить  
 
 автор: TetRiska   (09.09.2009 в 18:02)   письмо автору
 
   для: Lelik   (09.09.2009 в 03:46)
 

ф-цию Func() повесить на кнопку добавления? испробовал - не работает, или я не так понял и сделал?

>проверку на ИЕ или не ИЕ
можно поподробней?

  Ответить  
 
 автор: Lelik   (09.09.2009 в 20:09)   письмо автору
 
   для: TetRiska   (09.09.2009 в 18:02)
 


<body onload="Func();">



 function isIe() {
    if( document.all && !self.opera )
        return true;
    else
        return false;
}

  Ответить  
 
 автор: TetRiska   (10.09.2009 в 15:49)   письмо автору
 
   для: Lelik   (09.09.2009 в 20:09)
 

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

  Ответить  
 
 автор: Lelik   (10.09.2009 в 17:04)   письмо автору
 
   для: TetRiska   (10.09.2009 в 15:49)
 

ну так в чем проблема сделать после нажатия кнопки "добавить" происходило нужное действие? а сделать можно и нужно так, как это тебе более подходит ;)

  Ответить  
 
 автор: TetRiska   (11.09.2009 в 00:53)   письмо автору
 
   для: Lelik   (10.09.2009 в 17:04)
 

Выдает ошибку:
Webpage error details

Message: Object expected
Line: 88
Char: 5
Code: 0
URI: http://10.100.20.227/js/default.js

Прописал так в default.js:
function isIe() {
    if( document.all && !self.opera )
        return true;
    else
        return false;


function Func() {
    var oElem = document.getElementById('pToShow');
    var oCoords = getAbsoluteCoords(oElem);

    if( !isIe() )
        scrollTo( 0, oCoords.iTop );
    else
        document.body.scrollTop = oCoords.iTop+'px';

В пхп:
$goods .= "<div style='margin-top:3px'><input onclick=\"submit(); Func();\" name='add' type='image' src='".DOMEN."/images/add.gif' title='Добавить комментарий' /></div>";

Что же не так?

  Ответить  
 
 автор: Lelik   (11.09.2009 в 01:03)   письмо автору
 
   для: TetRiska   (11.09.2009 в 00:53)
 

ну хотя бы то, что вот эта строчка var oElem = document.getElementById('pToShow'); ссылается на объект с id=pToShow, а у тебя его нету.

  Ответить  
 
 автор: TetRiska   (11.09.2009 в 02:19)   письмо автору
 
   для: Lelik   (11.09.2009 в 01:03)
 

$goods .= "<td align='left'><div id='pToShow'></div><b>Комментарии:</b>";

if(!empty($_SESSION['login']) && !empty($_POST['add_x']))
                {
много букафф, запрос и тд...
header("location: ".DOMEN."/gallery/category/".$_GET['id']."/commodity/".$_GET['id_category']."");
                                }

$goods .= "<form action='' method='post' id='comm'>";
$goods .= "<div style='margin-bottom:5px'><b>Добавление комментария:</b></div>";
$goods .= "<div style='font-size:15px; color:gray'>".$comm_msg."</div>";
$goods .= "<div style='margin-top:3px'>Введите имя:<br /><input class='form_z' size='50' name='comm_name' id='comm_name' type='text' value='".$comm_name."'/></div>";
$goods .= "<div style='margin-top:3px'>Введите E-mail:<br /><input class='form_z' size='50' name='comm_email' type='text' value='".$comm_email."'/></div>";
$goods .= "<div style='margin-top:3px'>Введите сообщение:<br /><textarea class='form_z' name='comm_text' cols='40' rows='5'>".$comm_text."</textarea></div>";
$goods .= "<div style='margin-top:3px'><input onclick=\"submit(); Func();\" name='add' type='image' src='".DOMEN."/images/add.gif' title='Добавить комментарий' /></div>";
$goods .= "</form>";

Подключаемый скрипт:
function isIe() {
    if( document.all && !self.opera )
        return true;
    else
        return false;


function Func() {
    var oElem = document.getElementById('pToShow');
    var oCoords = getAbsoluteCoords(oElem);

    if( !isIe() )
        scrollTo( 0, oCoords.iTop );
    else
        document.body.scrollTop = oCoords.iTop+'px';

  Ответить  
 
 автор: TetRiska   (13.09.2009 в 00:16)   письмо автору
 
   для: TetRiska   (11.09.2009 в 02:19)
 

не срабатывает :( где допущено ошибку?

  Ответить  
 
 автор: TetRiska   (14.09.2009 в 14:19)   письмо автору
 
   для: TetRiska   (13.09.2009 в 00:16)
 

вопрос еще не решен (

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования