JQuery проблем

nbacool2

Registered
Здравейте. Ползвам JQuery 1.6.3 и плъгина
http://martinhansen.no/2011/03/29/jquery-dependance-plugin/comment-page-1
Чрез него искам при отварянето на страница за добавяне на статия, избирането на субкатегория да зависи от категорията. Тоест ако имам категория Свят и субкатегории Афганистан и Замунда и друга категория България със субкатегории Перник и Ямбол, при избирането на Ямбол автоматично да се избира категория България, а ако потребителя кликне на Афганистан категорията да се промени на Свят. Вижте страницата
http://web-dev.5bg.info/add_article.php . На мен нещата ми изглеждат както трябва, но по традиция трябва да мина по трудния път.

Главия код за функционалността е
HTML:
 Категория<input type='radio' name='category_type' class='Обща' value='1'>Обща->Субкатегория:            <script type="text/javascript"> 
                $('.Новини').dependsOn('.Обща');             </script> 
            <input type='radio' name='subcategory_type' class='Новини' value='1'>Новини,             <script type="text/javascript"> 
                $('.България').dependsOn('.Обща');             </script> 
            <input type='radio' name='subcategory_type' class='България' value='2'>България, <br />Категория<input type='radio' name='category_type' class='OTHER' value='2'>OTHER->Субкатегория:<br />                <br />Заглавие:<input type='article_name' name='article_name'' />
[/code][/js] :?
 
1. Изпуснал си .js разширението на файла и съответно той не е достъпен:

<script type="text/javascript" src="/scripts/jquery/jquery-dependency.js"></script>

2. Класове с имена на кирилица - не съм сигурен, че това работи

Код:
class='Обща'

$('.България').dependsOn('.Обща');
 
exec каза:
1. Изпуснал си .js разширението на файла и съответно той не е достъпен:

<script type="text/javascript" src="/scripts/jquery/jquery-dependency.js"></script>

2. Класове с имена на кирилица - не съм сигурен, че това работи

Код:
class='Обща'

$('.България').dependsOn('.Обща');

Добавих разширението .js и вече класовете са на латиница от вида:
Код:
$('.subcat1').dependsOn('.cat1');
и пак не става.
Да не би местоположението на скриптовете да е проблема? Опитах се да ги сложа в <head>, но js скрипта се определя от друг php скрипт по-надолу и ми дава грешката недефинирана променлива.
 
С този JS код, ти стартираш плъгина преди още да се е заредила страницата и за това не работи. Промени тези двете:

Код:
$('.subcat1').dependsOn('.cat1');
$('.subcat1').dependsOn('.cat2');

на този вариант:

Код:
$(function(){$('.subcat1').dependsOn('.cat1');});
$(function(){$('.subcat1').dependsOn('.cat2');});

По този начин ще извикваш плъгина едва след като цялата страница се зареди, когато всички елементи са налични, иначе браузъра не знае за тях.

Добра идея е да го сложиш в head пак по същия начин:

Код:
$(function(){
    $('.subcat1').dependsOn('.cat1');
    $('.subcat1').dependsOn('.cat2');
});
 
Код:
$(function(){$('.subcat1').dependsOn('.cat1');});
$(function(){$('.subcat2').dependsOn('.cat2');});

Благодаря. С този код се получи частично. При избиране на субкатегория се селектира категорията както трябва(в примера на http://martinhansen.no/2011/03/29/jquery-dependance-plugin/comment-page-1/), но при избиране на субкатегория, принадлежаща на друга категория, категорията си остава предишната. Виж пак страницата с примера - http://web-dev.5bg.info/add_article.php.
 
На примерната страница нямаш съб категории в OTHER и там не можах да тествам. Направих си локално копие, добавих още категории и работи нормално:

Код:
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
<title>Добави статия:</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://web-dev.5bg.info/scripts/jquery/jquery-1.6.3.min.js"></script>
<script type="text/javascript" src="http://web-dev.5bg.info/scripts/jquery/jquery-dependency.js"></script>
<script type="text/javascript" src="http://web-dev.5bg.info/scripts/tiny_mce/tiny_mce.js"></script>


<script type="text/javascript">
tinyMCE.init({
        theme : "advanced",
        mode : "textareas",
        plugins : "fullpage",
        theme_advanced_buttons3_add : "fullpage"
});
</script>

</head>
<body>
<form method="POST" action="add_article.php">
        <p>   
            
  Категория <input type='radio' name='category_type' class='cat1' value='1'>Обща->Субкатегория:            
		<script type="text/javascript">
                $(function(){$('.subcat1').dependsOn('.cat1');});             
		</script>
            <input type='radio' name='subcategory_type' class='subcat1' value='1'>Новини,             
		<script type="text/javascript">
                $(function(){$('.subcat2').dependsOn('.cat1');});             
		</script>
            <input type='radio' name='subcategory_type' class='subcat2' value='2'>България, <br />

  Категория <input type='radio' name='category_type' class='cat2' value='2'>OTHER->Субкатегория:
		<script type="text/javascript">
                $(function(){$('.subcat3').dependsOn('.cat2');});             
		</script>
            <input type='radio' name='subcategory_type' class='subcat3' value='1'>АНГЛИЯ,             
		<script type="text/javascript">
                $(function(){$('.subcat4').dependsOn('.cat2');});             
		</script>
            <input type='radio' name='subcategory_type' class='subcat4' value='2'>ФУТБОЛ, <br />


                <br />Заглавие:<input type='article_name' name='article_name'' />

                <br />Дата на публикуване:
               <input type="text" name="datetime" value="0000-00-00 00:00:00" size="16" maxlength="16" /> <p>Във формат: година-месец-ден час:минути:секунди (гггг-мм-дд чч:мм:сс). Ако оставите полето празно, автоматично ще бъде генериран часа на публикуването.
                <textarea name="content" cols="50" rows="15">Въведете текста си тук.</textarea>
                <input type="submit" value="Запази" name="save" />
        </p>
</form>
</body>
</html>
 
exec каза:
На примерната страница нямаш съб категории в OTHER и там не можах да тествам. Направих си локално копие, добавих още категории и работи нормално:

Код:
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
<title>Добави статия:</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="http://web-dev...........
            ........................................................
  Категория <input type='radio' name='category_type' class='cat1' value='1'>Обща->Субкатегория:            
		<script type="text/javascript">
                $(function(){$('.subcat1').dependsOn('.cat1');});             
		</script>
            <indsOn('.cat2');});             
		</script>
            <input type='radio' name='subcategory_type' class='subcat3' value='1'>АНГЛИЯ,             
		<script type="text/javascript">
                $(function(){$('.subcat4').dependsOn('.cat2');});             
		</script>
            <input type='radio' name='subcategory_type' class='subcat4' value='2'>ФУТБОЛ, <br />


                <br />Заглавие:<input type='article_name' name='article_name'' />

        
</body>
</html>

Да. Току-що и аз добавих още субкатегории и всичко работи както трябва, с изключение например като избереш субкатероия "World" и след това можеш да избереш категорията "Обща", без това да uncheck-ва "World" , а от примера на официалния сайт това се получава. Може ли да се направи нещо по този въпрос? Възможно ли е да има проблеми с версията на JQuery, която ползвам? За примера виж пак същата страница.
 
В демото е показано по доста по-различен начин, с няколко под-списъка, като зависимостите са вътре в тези под-списъци, а не са на най-високото йерархично ниво. Не съм сигурен, но може би това което искаш да направиш, не се поддъжра от този плъгин. Не мога да ти помогна.
 

Back
Горе