2009-12-10 3 views
0

ГЛАВНОЕ ОКНО

// some javascript 
//some html 
//here ajax-call to load all divs 
//all divs hidden by default 
//based on user choice(from select option), show selected group of divs 
//click any shown div to call corresponding popup 

Всплывающее окно

//edit contents of that div. 
//on close i need 
1. refresh main window to load all divs 
2. select the previously selected user option(from select option) 
3. show corresponding divs only 
4. most important is i have to give the user the main page, 
    where they clicked the div before(not the page starting always!) 

Я попробовал, и я остался "$ не найдена ошибка". есть идеи..? предложения?

это главное окно

 <script type="text/javascript" src="jquerymin.js"></script> 
     <script type="text/javascript"> 
     var visible_status=0; 
     function selectFn(sno){ 
     if(sno==1){ 
       $('#id2').hide(); 
       $('#id1').show(); 
       visible_status=1; 
     }else if(sno==2){ 
       $('#id2').show(); 
       $('#id1').show(); 
       visible_status=2; 
     } 
     } 

     function popitup(url) { 
      newwindow=window.open(url+'?parent_status='+visible_status,'name'); 
      if (window.focus) {newwindow.focus();} 
       return false; 
     } 
     </script> 
     <select name='optionw' 
     onchange="selectFn(this.options[this.selectedIndex].value);"> 
     <option value="">Select</option> 
     <option value="1">Div1</option> 
     <option value="2">All</option> 
     </select> 
     <div id='id1' style="display:none;">DIV1</div><!--by ajax i am loading--> 
     <div id='id2' style="display:none;">DIV2</div><!--these divs--> 
     <button onclick="popitup('popup.php');">popUp</button><br><!--and these--> 

popupwindow

<script type="text/javascript" src="jquerymin.js"></script> 
    <script type="text/javascript"> 
    var parent_status='<? echo $_GET[parent_status];?>'; 

    function closePopup() { 
     window.opener.history.go(0); 
     //alert('going to call parent selectFn('+parent_status+')'); 
     window.opener.selectFn(parent_status); 
     self.close(); 
    } 
    </script> 

...Here editing a part of the main page content... 
<input type=button value=close_popup onclick="closePopup();"> 

Если я удалить комментарии в функции closePopup, он работает, как ожидалось. Любая помощь, чтобы заставить ее работать без строки.

+0

Где конкретно вы получаете отказ на $? Шаг 4 Я угадываю? – Goyuix

+0

Я использовал jquery в шаге 3. но я не использовал событие $ (document) .ready. bcoz, divs загружаются ajax. после этого в соответствии с выборами пользователя отображаются или скрыты div. если я использовал готовое событие, я думаю, что он будет запускаться всякий раз, когда загружается страница. Поэтому я избегал. – Kumar

+0

Пожалуйста, переименуйте этот вопрос, чтобы быть тем, что отдаленно информативно, чтобы кто-то видел его на страницах списка вопросов! – ironfroggy

ответ

2

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

+0

@jay Я редактировал вопрос, включая коды. Я хочу знать, где я ошибаюсь? – Kumar

+0

@jay спасибо за вашу попытку.У меня нет проблем с двойной кавычкой в ​​GET, ее отлично работает. если я удалил комментарий в функции closePopup, все в порядке. Но это предупреждение - это шум для пользователя, поэтому я хочу его удалить. – Kumar

+0

@kk Итак, вы говорите, что если у вас есть предупреждение, все работает нормально, и все переменные правильны. Если вы вдруг удалите предупреждение, вы получите сообщение «$ not found error»? – Jay

1

получить плагин firebug для firefox. загрузите свою страницу .. перейдите в firebug console .. введите $, и если он не скажет 'function()', вы не включили библиотеку jQuery правильно

+0

спасибо за эту новую идею тестирования. – Kumar

0

Я пытаюсь понять ваш вопрос; очень неясно, что вы описываете. Отображается ли код, который вы показываете, из вашего веб-браузера после его загрузки (путем просмотра источника) или до его оценки на сервере?

Что произойдет, если вы измените эту строку в всплывающем окне:

var parent_status='<? echo $_GET[parent_status];?>';

к этому:

var parent_status=1;

+0

В настоящее время я пытаюсь понять этот вопрос, но, насколько я могу это исправить, он отлично работает, если javascript делает паузу для предупреждения, иначе он выдает указанную ошибку. – Jay

+0

@ Похоже, что это так, как он говорит, но это не похоже на то, что у него возникает некоторая нечетная проблема времени с кодом, который он показывает. –

+0

@jay благодарит за то, что подписал его, и прокомментировал. – Kumar

0

Согласно тому, что я понял, здесь есть ниже код и проверить его если это сработает для вас:

Вставьте этот код в главное окно:

<?php if(isset($_GET['parent_status'])): ?> 
$(document).ready(function(){ 
    selectFn(<?php echo $_GET['parent_status'] ?>); 
}) 
<?php endif ?> 

Ниже этого код:

function popitup(url) { 
    newwindow=window.open(url+'?parent_status='+visible_status,'name'); 
    if (window.focus) {newwindow.focus();} 
     return false; 
} 

И замените closePopup функцию внутри всплывающего окна с этим кодом:

function closePopup() { 
    var href = window.opener.location.href; 
    if((pos = href.lastIndexOf('parent_status=')) >= 0) 
    { 
     var patt = new RegExp('parent_status=' + parent_status); 
     href = href.replace(patt, 'parent_status='+parent_status); 
    } else { 
     href = window.opener.location.href + '?parent_status=' + parent_status 
    } 
    window.opener.location.href = href; 
    self.close(); 
} 

Надеется, что это помогает.