PDA

Просмотр полной версии : [jQuery] - Задай вопрос, получи ответ


Isis
20.04.2008, 18:33
В этой теме задаём вопросы по библиотеке jQuery (http://jquery.com) (Ajax, JS, Css and etc...)

FAQ

scrat
20.04.2008, 18:38
Как проверить показан ли элемент(конкретно для выпадающей менюшки)?
<script language="javascript" src="jquery-1.2.3.min.js"></script>
<script language="javascript">
function loader(page,param)
{
alert($("#content").css("display"));
$("#content").hide("slow");
$.post(page,{ param1: param},onAjaxSuccess);
function onAjaxSuccess(data)
{
$("#content").append(data);
$("#content").show("slow");
}
}
</script>
<input type="text" id="t"><input type="button" onclick="loader('ajax.php',document.getElementById('t').val ue)">
<span id="content"></span>

Isis
20.04.2008, 18:40
function loader(page,param)
{
if($('#content').is(':hidden'))
{
function onAjaxSuccess(data)
{
$("#content").append(data);
$("#content").show("slow");
}
$.post(page,{ param1: param},onAjaxSuccess);

}
else
{
$('#content').hide("slow");
$('#content').empty();
}
}

astrologer
20.04.2008, 18:54
$('#content').is(undefined) Выражение выше никогда истинным не будет, вот код из самой jQuery: is: function( selector ) {
return selector ?
jQuery.multiFilter( selector, this ).length > 0 :
false;
},
+ не указанные параметры всегда передаются как undefined

Naydav
25.04.2008, 14:10
$(document).bind("ready", function(){
loginStart();
});

function loginStart()
{
$("#loginButton").click(
function()
{
// Фунция затемнения экрана, описаная в другом месте, так как повторно испрльзуеться
feed();
alert("in");
}
);
}

Вопросы:
1. Правильно ли составлен код?
2. Почему при нажатии выскакивает 2 alert("in")?
3. Как срабатывает код? Получаеться при загрузке страницы срабатывает функция loginStart(), а потом, при нажатии на кнопку, что вызывает эту функцию опять? Или кодом, что я привел выше, мы устанавливаем постоянный обработчик при нажатии на кнопку?

спс

ps
или
$("li").bind("click", function(){
// Фунция затемнения экрана, описаная в другом месте, так как повторно испрльзуеться
feed();
});
4.Эта функция должна помещаться всегда в оболочке?
5. 4. ГДЕ должна быть описана функция feed(); ???
Просто лна будет использоваться в разных местах, и дублировать ее код в каждой функции нет смысла

Naydav
25.04.2008, 14:45
Все работаетЭ вот так:

$(document).bind("ready", function(){
$("#loginButton").click(function()
{
feed();
});
});

function feed()
{
alert("i");
}
Но правильно ли составлен код?
И почему функция срабатывает два раза?

astrologer
25.04.2008, 17:39
Срабатывает ровно один раз:<script src="js/jquery.js"></script>
<script>
$(document).bind("ready", function(){
$("#loginButton").click(function()
{
feed();
});
});

function feed()
{
alert("i");
}
</script>
<input type="button" id="loginButton">

Код вроде верный, может, несколько нерациональный.
Например, следующее:$(document).bind("ready", function(){
$("#loginButton").click(function()
{
feed();
});можно заменить на:$(document).ready(function()
{
$('#loginButton').click(feed);
};или$(document).bind('ready', function()
{
$('#loginButton').bind('click', feed);
};+ если функция loginStart вызывается один раз, можно оставить её анонимной.И почему функция срабатывает два раза?Недостаточно исходных данных. Могу лишь предположить, что обработчик навешен и на родительский элемент и на потомка. (События в JS "Всплывают (http://www.quirksmode.org/js/events_order.html)")

P.S.5. 4. ГДЕ должна быть описана функция feed(); ???До какого-либо её использования.

P.P.S.
feed - это "кормить", может, нужно "fade"?

brasco2k
23.05.2008, 20:11
как сделать выпадающий элемент под тип:

slideToggle("medium");

только чтобы он выпадал по горизонтали

Naydav
23.05.2008, 20:38
$("#obj").slideIn();

brasco2k
24.05.2008, 13:33
$("#obj").slideIn();

не работает...

DIAgen
24.05.2008, 13:49
Где можно найти Manning jQuery in Action 2008 на русском? :)

astrologer
24.05.2008, 14:21
не работает...<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<title>Пример.</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

$(function()
{
$('#qwe').animate({width: 200});
});

</script>

<style type="text/css">

#qwe
{
height: 150px;
background: #EEE;
border: #AAA solid 1px;
display: none;
}

</style>

</head>
<body>

<div id="qwe"></div>

</body>
</html>

brasco2k
24.05.2008, 15:50
Где можно найти Manning jQuery in Action 2008 на русском? :)

я бы посоветовал

http://anton.shevchuk.name/javascript/jquery-for-beginners/

правда это не книга, но все же...

astrologer
24.05.2008, 16:12
Я бы посоветовал исходники почитать.

Naydav
26.05.2008, 16:08
brasco2k
не работает...
Ой ошибся, правильно
# slideDown(speed, callback) – показать элемент, спустив его сверху;
# slideUp(speed, callback) – показать элемент, подняв его снизу;

А вообще, вот справочник/шпаргалка по всем свойствам
http://www.gscottolson.com/jquery/jQuery1.2.cheatsheet.v1.0.pdf

Naydav
26.05.2008, 16:31
Где можно найти Manning jQuery in Action 2008 на русском?
Первый спринт посвящён замечательному javascript фреймворку - jquery.
Главными источникоми информации, будут являться книга jQuery in Action и официальный сайт jquery.
http://hrundel.eth0.net.ua/blog/2008/03/01/jquery/?reply_to=3

Вот довольно много инфы о jquery на русс
http://drtermit.ya.ru/replies.xml?item_no=26&ncrnd=8484
http://habrahabr.ru/blog/jquery/41688.html
http://flora.org.ru/2008/02/25/15-dnej-s-jquery/
http://www.linkexchanger.su/category/jquery

кcта сама книга
http://kernelhost.org/books/Manning.jQuery.in.Action.Feb.2008.pdf
вполне читабельна и на инглише...
главное примеры

Naydav
26.05.2008, 16:50
PHP библиотека для jQuery
Данная библиотека очень схожа по назначению с Xajax, только на клиентской части используется jQuery и небольшой класс для разбора ответа сервера
http://anton.shevchuk.name/php/php-library-for-jquery/

jQuery - AJAX - PHP:
http://jquery.hohli.com/

Naydav
12.06.2008, 18:01
Вопрос нужно выбрать все инпуты(класса option) из формы,значение которых не пустое
что-то типа
var count = $(".option").find("@value!=''").length;
но так length всегда 0
возможно из-за того, что value при загрузке у всех пустое

astrologer
12.06.2008, 19:18
$('input.option[@value]');

Naydav
20.06.2008, 18:12
Наверно это уже обсуждалось:
Если мы используем ajax, то данные передаються в utf8, можно ли передавать данные в windows-1251

Проблема возникла в том, что когда просто передаю форму, то данные идут на сервер в ютф8, я их обрабатываю и все нормально...
Но когда к форме прикрепляю файл, то данные идут в windows-1251
Вопрос:
Как заставить передавать в одной кодировке(в любой) форму, внезависимости передаеться или нет file

lsass.exe
30.06.2008, 20:44
на сайте есть форма авторизации, после ее заполнения даные уходят на скрипт enter.php там проверяются даные и либо выводится ошибка, или если все ок, должно произойти обновление страницы сайта полностью...Пробывал писать <meta http-equiv='refresh' content='0; URL=./'> не помогает...Если юзать header("location: ") то в div'e где выводятся сообщения об ошибке будет вся страница сайта )

Naydav
30.06.2008, 21:01
Почему бы потом не вызывать javascript функцию, которая и будет обрабатывать ответ? Так даже и правильней (разделение клиентской и серверной части)

function showResponse(responseText, statusText){
var json = eval( "(" + responseText + ")" );
if(json.error==0) {
window.reload(true);
} else {
alert(json.messadge); // или $("#divError").html(json.messadge);
}
}

Где options и submitHandler

var options = {
type: "POST",
url: "/cAjax.class.php?module=MyProfile&method=checkEditMyProfile&id={id}",
success: showResponse,
clearForm: 1,
timeout: 3000
};

$(form).ajaxSubmit(options);


В PHP5 и функция для преобразования в json есть

json_encode(array('error'=>1, 'messadge'=>self::cp12512utf($error));

----
Еду домой, если нужно вечером могу выложить полный скрипт обработки форм(валлидация+отправка+о работка результата)

[Raz0r]
30.06.2008, 23:25
Есть div с overflow: hidden; Внутри него располагаются создаваемые пользователем DOM-элементы. Каким образом можно с помощью jQuery определить является ли DOM-элемент видимым или невидимым после того, как он оказался за пределами div'а в котором он находится?
З.Ы. с :visible не получается

Naydav
01.07.2008, 00:59
[Raz0r]
Невидимым, я так понял будет, тот элемент, который будет отображаться, за пределами установленной высоты и ширины родительского блока.

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

Метод действенный, но не факт, что самый эффективный

Solker
01.07.2008, 18:29
Не получается доделать систему рейтинга, принцип как на Баше.
В HTML коде присутствуют несколько <span> с разными ID. Примерно так:

<a href="#" onclick="rating('+',12)">+</a><span id="12">1</span><a href="#" onclick="rating('-',12)">+</a>
<a href="#" onclick="rating('+',13)">+</a><span id="13">2</span><a href="#" onclick="rating('-',13)">+</a>
<a href="#" onclick="rating('+',14)">+</a><span id="14">0</span><a href="#" onclick="rating('-',14)">+</a>
<a href="#" onclick="rating('+',15)">+</a><span id="15">1</span><a href="#" onclick="rating('-',15)">+</a>

Соответственно по каждому спану по бокам + и - для установления рейтинга.

Рейтинг устанавливается примерно так:
function rating(znak,quote)
{
$.post("ajax.php", { to: znak, id: quote },
function(data){
$('#'+quote).html(data)
});
}
т.е. когда кликаеш по плюсю, то в функцию передается собственно знак (+ или -) и ID спана. Ну далее это все идет на скрипт, который уже там устанавливает новый рейтинг, и возвращает рейтинг который вставляется в <span> с id из которого собственно говоря был совершен вызов.

Все выше перечисленное прекрасно работает.

Но я хочу вставить индикатор загрузки, когда совершается через AJAX.
А Индикатор загрузки я хочу запихнуть как раз между <span></span>. Что бы пока скрипт получает новые данные, там вместо рейтинга кружился какойнить шарик.

т.е. принцип примерно такой:
-Скрипт отсылает данные на обработчик.
-Между спанами появляется этот самый шарик.
-Скрипт получает новые данные.
-Убирает шарик.
-Вставляет новые данные.

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

Naydav
01.07.2008, 19:16
Не получается сделать четко, иногда кружки появляются сразу во всех спанах
А ты указываешь в каком именно спане должен появляться лоадер?

Вначале функции rating сделай включение загрузки своего кружка,
например
function rating(znak,quote)
{
$("#"+quote).html('<img src="/_site/templates/images/ajax_loading.gif" alt="Loading" id="ajaximage"/>');

При отсылке используй jQuery.post( url, [data], [callback], [type] )
где callback, которая возвпащает резал, например так
$("#"+quote).html(resalt); (и кружок погасили и резалт вывели)

пс
и не используй onclick="rating('+',12)", для этого есть $(document).ready(function(){});

Такие обработчики, как и стили должны быть отделены непосредстенно от контента

Naydav
03.07.2008, 16:42
Последний элемент в перечислении

$(".status").each(function(){
// alert( $(this:last) );
});

Как узнать, когда подойдет очередь последнего элемента?

пс
$(".status").length - не предлагать, сами с усами :)

astrologer
03.07.2008, 18:00
$(".status").each(function()
{
if($(this).is(':last'))
{
process(this);
}
});$(".status").length - не предлагать, сами с усамиПочему?var jq = $('.status'), last = jq.size() - 1;
jq.each(function(i)
{
if(i == last)
{
process(this);
}
});

Trieg
19.07.2008, 05:00
$.fn.ajaxSubmit = function(e) {
this.submit(function(){
$("#formErrors_ajax").removeClass().addClass('ajax_message_box').text( 'Ждемс...').fadeIn("slow");
var params = {};
$(this).find("input[@checked], input[@type=\'text\'], input[@type=\'hidden\'], input[@type=\'password\'], input[@type=\'submit\'], option[@selected], textarea").filter(":enabled").each(function() {params[ this.name || this.id || this.parentNode.name || this.parentNode.id ] = this.value;});
$.post("./XXX", params, function(xml) {
strError = null;
oFocus = null;
$("AjaxResponse", xml).each(function() {
strError = this.getAttribute("error");
oFocus = this.getAttribute("focus");
strRedirect = this.getAttribute("redirecturl");
});
if (strError.length == 0) {
$("#formErrors_ajax").fadeTo(200,0.1,function() {$(this).html('').addClass('off').fadeTo(900,1);}) ;
redirectu = "YES"; /*** редиректить ***/
} else {
redirectu = "NO"; /*** не редиректить ***/
$("#formErrors_ajax").fadeTo(200,0.1,function() {$(this).html(strError).addClass('ajax_error').fad eTo(900,1);});
if (oFocus) $("#" + oFocus).get(0).focus();
}
});
if (redirectu == "NO") { /*** невидно переменную redirectu ***/
return false;
} else {
return true;
}
});
return this;
}



немогу понять почему не видно переменую redirectu..

Shadow_p1raT
25.07.2008, 15:01
Думаю я по адрессу,вообщем я получаю список из формы

64.66.192.62:32080
200.63.213.2:553
201.45.188.172:3128
200.129.178.70:3128
79.134.33.44:3128
201.114.194.163:3128
141.24.249.130:3128
141.24.33.162:3128
118.98.212.242:3128
141.76.45.17:3128

Возможно ли этот список превратить в массив как на php?типа array([0]=>127.0.0.0,[1]=>следующий проксик,а потом отпровлять их по очереди моему скрипту.
Если это возможно,то как это реализовать на jQuery?
Зарание благодарен.

Shirmanov
27.07.2008, 17:35
Кто может привести кусок кода на Jquery для аплоада файлов на сервер, БЕЗ ИСПОЛЬЗОВАНИЯ СТОРОННИХ ПЛАГИНОВ, только с помощью одной библиотеки jquery :confused: . Заранее благодарен.

Naydav
28.07.2008, 15:38
Кто может привести кусок кода на Jquery для аплоада файлов на сервер, БЕЗ ИСПОЛЬЗОВАНИЯ СТОРОННИХ ПЛАГИНОВ, только с помощью одной библиотеки jquery :confused: . Заранее благодарен.
jquery - это javascript, а javascript'ами, НЕЛЬЗЯ загрузить файл на сервер (может я конечно отсал от эизни, но врятли :)), можно его(файл) "послать на сервер", например post'ом, но на уровне сервера, все равно нужно иметь скрипт (например написанный на php), который обработает этот запрос...
Примеры таких скриптов (классов) в соседней теме

Shirmanov
28.07.2008, 16:41
jquery - это javascript, а javascript'ами, НЕЛЬЗЯ загрузить файл на сервер (может я конечно отсал от эизни, но врятли :)), можно его(файл) "послать на сервер", например post'ом, но на уровне сервера, все равно нужно иметь скрипт (например написанный на php), который обработает этот запрос...
Примеры таких скриптов (классов) в соседней теме
Да это понятно, что нужет скрипт я с этим не спорю, как написать отсылку на Jquery этого файла?

Naydav
28.07.2008, 17:04
Да это понятно, что нужет скрипт я с этим не спорю, как написать отсылку на Jquery этого файла?
А чем просто
<form id="myform" enctype="multipart/form-data" method="post" action="">
<input name="file" type="file"/>
</form>
не устраивает? и что подразумевается под отсылкой? автоматом без нажатия кнопки?

Shirmanov
28.07.2008, 20:06
Что бы эта отсылка файла выполнялась без перезагрузки страницы, но по нажатию кнопки, что бы автоматом показалась что все успешно произошло, а если это картинка то показался бы еще и уменьшеное изображение. И все это должно быть без перезагрузки!

Vanofuture
29.07.2008, 03:07
Кто-нибудь, подскажите, можно ли этот код как-то элементарно выразить через jQuery?
img=document.getElementsByTagName('img');
for(i=0;i<img.length;i++){
if(img[i].parentNode.nodeName=='A' && img[i].parentNode.className=='link'){
img[i].parentNode.style.borderBottom='0px';}}

Корвин
29.07.2008, 13:27
мне нужен скрипт прокрутки фоток горизонтальный, где мона найти?

Naydav
29.07.2008, 13:39
мне нужен скрипт прокрутки фоток горизонтальный, где мона найти?
А поконкретнее, ведь для простого скрола, достаточно фоткам в стиле указать флоат - лефт и поместь в див со стилем оверфлоу авто

а можно и так
_http://www.drive.ru/bmw/photos/?id=1482900
там можешь скрипт и взять

DCRM
07.01.2009, 06:03
Столкнулся с проблемой... при подгрузке данных через $.ajax, эффекты от библиотек http://masterfidgeter.com/projects/captify/ ... http://leandrovieira.com/projects/jquery/lightbox/ не распространяются на новые элементы... (так то можно каждый раз через onClick() зараннее написать например для lightbox вызов ф-и вручную... но это уже не то...)

$(document).ready(function(){

$.Lightbox.construct({show_linkback: false.....})

function getIdSet(div_x,type_x,date_x,url_x)
{
$.ajax({type: type_x,data: date_x+'&ajax=true',url: url_x,
success: function(dt) {$(div_x).html(dt);}
});
}

p.s. (Вот тут... http://www.takemusu-penza.ru/)

Вот "ручное" переопределение... нужно добавить в подгружаемый элемент... не есть гуд... по идее должна быть ф-я перерасчёта всех элементов... но какая...?
<script type="texy/javascript">
$(document).ready(function()
{
$("div.....").lightbox();
$("img....").captify({...............});
})
</script>

yura372
21.04.2009, 22:15
Можете ли вы сделать JQ скрипт который может заменить html код.Например код в ява скрипте один заменить на другой.

alwex
15.07.2009, 23:32
помогите создать запрос на JQUERY:

1. POST передача
2. Прогресс бар чтобы получало под ид (id="bar")
3. чтобы передавало данные в файл jres.php
4. Передавало id=4 (4 это любая цифра)
5. И как оно результат будет выводить? Мне надо чтобы например просто писало echo"Город выбран"; и всё...

спасибо всем кто поможет... я заодно и научусь делать пост запросы через эту библиотеку)

diGriz
16.07.2009, 00:08
Не совсем понял что ты хочешь сделать с прогрес бар, покажу тебе основную суть, со списками. Дальше самому не сложно разобраться.



<script src='js/jquery.js' type='text/javascript'></script>
<script type="text/javascript">
$(document).ready(function(){
showCitiesById($('#cityId').val());

});
function showCitiesById (val) {
$.ajax({
type: "POST",
url: "jres.php",
data: "cityId="+val,
success: function(html){
$("#cityContainer").html(html);
}
});
}
</script>


<select name="cityId" id="cityId" onchange="showCitiesById(this.value)">
<option value="Moscow">Moscow</option>
<option value="Vegas">Vegas</option>
</select>
<!--Здесь выводим -->
<div id="cityContainer">

</div>


файл jres.php

<?php
//Здесь обрабатываешь полученные данные, заносишь в бд и т. д.
$cityId = $_POST['cityId'];
echo "Сейчас выбран город: " . $cityId;
?>

alwex
16.07.2009, 08:55
спасиб... а как бы сделать чтобы картинку загрузки туда прикрутить к запросу?

alwex
16.07.2009, 09:56
$("#loading").ajaxStop(function(){
$(this).hide();
});

ток куда это в запросе засунуть?

alwex
16.07.2009, 10:04
а так можно сделать запрос?

<script type="text/javascript">
$(document).ready(function(){
showCitiesById($('#cityId').val());

});
function showCitiesById (val) {
$('#load-layer').show("fast");
$.ajax({
type: "POST",
url: "jres.php",
data: "cityId="+val,
success: function(html){
$("#cityContainer").html(html);
}
});
$('#load-layer').hide("fast");
}
</script>

diGriz
16.07.2009, 10:14
Берешь картинку отсюда http://ajaxload.info/. Далее задаем событие при клике по кнопке, на сколько я понял у тебя будут передаваться данные из формы. Потом добавляем в контейнер, картинку с того сайта и передаем данные. Делаем эффект fadeout убераем картинку.



<html>
<head>
<title></title>
<script src='js/jquery.js' type='text/javascript'>
<script type="text/javascript">
$(function() {
$('#submit').click(function() {
$('#container').append('<img src="loading.gif" alt="Идет загрузка" id="loading" />');
var name = $('#name').val();

$.ajax({
url: 'jres.php',
type: 'POST',
data: 'name=' + name,

success: function() {
$('#loading').fadeOut(500, function() {
$(this).remove();
});
}
});

return false;
});
});
</script>
</head>
<body>
<div id="container">
<input type="text" name="name" id="name"/>
<input type="submit" name="submit" id="submit" value="Go" />
</div>
</body>
</html>

alwex
16.07.2009, 10:19
ммм, я понял, ток у меня через селект как ты первый раз делал функцию...

diGriz
16.07.2009, 11:11
нет, у меня не форма, у меня селект как ты первый раз делал... как сделать в селекте этот загрузчик?



<script src='js/jquery.js' type='text/javascript'></script>
<script type="text/javascript">
$(document).ready(function(){
showCitiesById($('#cityId').val());

});
function showCitiesById (val) {
$('#container').append('<img src="loading.gif" alt="Loading..." id="loading" />');

$.ajax({
type: "POST",
url: "jres.php",
data: "cityId="+val,
success: function(html){
$("#cityContainer").html(html);
$('#loading').fadeOut(500, function() {
$(this).remove();
});
}
});
}
</script>

<div id="container">
<select name="cityId" id="cityId" onchange="showCitiesById(this.value)">
<option value="Moscow">Moscow</option>
<option value="Vegas">Vegas</option>
</select>

</div>
<!--Здесь выводим -->
<div id="cityContainer">

</div>

alwex
16.07.2009, 11:16
супер!!!! спс!!!!

FeraS
23.07.2009, 08:55
Пацаны, проблема такая: на странице есть кнопка Открыть. При нажатии на нее появляется (с помощью jquery) блок, а сама кнопка прячется (slideUp).
Если я в этом состоянии обновлю страницу, то, естественно, все вернется, т.е. кнопка будет, блока нет.

Надо сделать так, чтобы при нажатии на батон в куку записывалось состояние блока (видим\невидим) и также кнопки (видима\невидима). Т.е. при обновлении страницы это состояние считывается из куки и все ок отображается.

+ в блоке, который открывается, есть кнопка Закрыть, при нажатии на которую этот блок закрывается и появляется наша кнопка Открыть, и кука удаляется.

Никак мне это не организовать :(

Andres
23.07.2009, 12:19
Чего тему "важной" ни сделают? о_О

diGriz
23.07.2009, 14:19
2 Feras

Немного коряво написал, времени мало было. Для работы тебе еще понадобится jquery.cookie.js (http://plugins.jquery.com/project/Cookie) .



<html>
<head>
<script src="./js/jquery.js"></script>
<script src="./js/jquery.cookie.js"></script>
<script>
$(function(){
//Если нажата кнопка open и есть кука
if ($.cookie('submitOpen-' + 1)) {
$('#close').show("slow");
$('#open').css("display","none");
}
$('#open').click(function() {
cookieSet(1);
$('#open').slideUp();
$('#close').show("slow");

});
$('#close').click(function() {
cookieDel(1);
$('#close').slideUp();
$('#open').show("slow");
});
});
function cookieSet(index) {
$.cookie('submitOpen-' + index, 'open', {expires: null, path: '/'});
}
function cookieDel(index) {
$.cookie('submitOpen-' + index, null, {expires: null, path: '/'});
}
</script>
</head>
<body>
<div>
<input type="submit" name="open" id="open" value="open" />
</div>
<div>
<input type="submit" name="close" id="close" value="close" style="display:none"/>
</div>
</body>
</html>

Pashkela
23.07.2009, 22:55
Други, помощь треба:)

Чтобы долго не расписывать, есть типо сайт анекдотов, с форумом и etc, есть система голосования за каждый анек, вопрос:

Система рабочая, но не красивая - т.е. при выставлении оценки анекдоту происходит открытие lala.php, в котором через GET цепляются ID анекдота и его оценка, потом обычные sql-запросы, после чего скрипт автоматически самозакрывается, но всё равно экран дергается и всё такое, как привязать сюда Jquery? Т.е. чтобы проголосовал и ничего не открывалось и не всплывало, а просто молча происходила обработка оценки и менялся рейтинг анекдота

С jquery дело имел только один раз, в форме авторизации, проверка логина на существоание в БД также без перезагрузки, умом как бы понимаю, что да как, но реализовать не могу - тут формы нет.

Чтобы было понятно, о чем речь, вот сайт, где это надо сделать:

http://old-ostrie.ru/kucha-0.html

Буду признателен за любые наводки в тему

ЗЫЖ В гугле "jquery система рейтинга" набирал, пост в этой теме про баш читал, но всё равно мало информации

id и выставленный балл чётко могу зацепить, но на php

FireFenix
24.07.2009, 00:46
fucntion set_rate(id, rate)
{
$.ajax(
{
type:"POST",
url:"set_rate.php",
data:"id=" + id + "&rate=" + number,
success:function(response)
{
$("#rate_show").val(response); //элементу с id="rate_show" присваиваем новый рейтинг
}
}
);
}


set_rate.php

<?php

if (isse($_POST['id']) && isse($_POST['rate']))
{
$query = 'UPDATE table SET rate=(rate + ' . $_POST['rate'] . ')/0.9) WHERE id="' . $_POST['id'] . '"';
mysql_query($query);

$query = 'SELECT * FROM table WHERE id="' . $_POST['id'] . '"';
$result = mysql_query($query);
$fetch = mysql_fetch_array($result);

echo($result);
}

?>

где-то так

Pashkela
24.07.2009, 01:00
но есть же еще форма вывода, сама kucha-0.html, типо в ней что, ничего менять не надо???

Pashkela
24.07.2009, 01:28
Если посмотреть на "Зацени анекдот: [1] [2] [3] [4] [5]"

и подвести мышь к [1] например, то будет такая ссылка высвечена (в опере по крайней мере:

http://old-ostrie.ru/ocenka-5623-1.html

где 5623 - это ID анека
а 1 - это выставляемая оценка

треба пример с AJAX чтобы происходила передача ID и выставленной оценки в файл ocenka.php, он бы делал то, что и сейчас делает - т.е. просто апгрейтит базу, прибавляет баллы за анекдом по его ID, но без загрузки самого ocenka.php + без перезагрузки страницы чтобы менялся (сразу) рейтинг анекдота

FireFenix
24.07.2009, 01:47
index.html

<head>
<script type="text/javascript" src="jquery.js"></script>
</head>

<script language="javascript">

function set_rate(id, rate)
{
$.ajax(
{
type:"POST",
url:"rate.php",
data:"id=" + id + "&rate=" + rate,
success:function(response)
{
$("#rate_show").html(response); //диву с id="rate_show" меняем контент на обновлённое количество голосов
$("#vote").html("Проголосованно"); //диву с id="vote" меняем контент (линки голосования) на "Проголосованно"
}
}
);
}

</script>

Рейтинг : <div id="rate_show" style="display:inline">[10]</div>
<br>
Великий русский полководец Суворов, одержав победу в сражении при Рымниках, во время Русско-Турецкой войны 1787-1792 г. , получил наименование Суворов-Рымникский. Григорий Потёмкин, добравшись до Крыма, получил от Екатерины титул князя и наименование Потёмкин-Таврический.
А вот дошёл бы Маршал Жуков до Колорадо...
<br>
<div id="vote">
Зацени анекдот :<br>
<a href="javascript:set_rate(5623, 1);">[1]</a>&nbsp;
<a href="javascript:set_rate(5623, 2);">[2]</a>&nbsp;
<a href="javascript:set_rate(5623, 3);">[3]</a>&nbsp;
<a href="javascript:set_rate(5623, 4);">[4]</a>&nbsp;
<a href="javascript:set_rate(5623, 5);">[5]</a>
</div>

rate.php

<?php

echo ($_POST['id'] . ' - ' . $_POST['rate']);
//любые операции с полученным контентом

?>

1) добавить див в количество голосов анека (или другой эелмент)
2) добавить див для голосования под текстом
3) добавить адресс ссылок на JS ну и как-нить передевать id + rate

Pashkela
24.07.2009, 02:07
Непонятно, ничего не происходит, в rate.php даже прописал открытие файла - ничего не создается, как будто по нажатию кнопки обращение к rate.php вообще не производится.

Pashkela
24.07.2009, 02:22
В аське получше общаться:) Большое спасибо, теперь понял. Риспект

Solker
07.12.2009, 22:28
Вопрос, структура HTML вот такая:

<table class="contentpaneopen">
<tbody><tr>
<td class="contentheading" width="100%"><span>НАЗВАНИЕ 2<span></a></td>
</tr></tbody>
</table>

<div class="desc">
ОПИСАНИЕ 2
</div>

<table class="contentpaneopen">
<tbody><tr>
<td class="contentheading" width="100%"><span>НАЗВАНИЕ 1<span></td>
</tr></tbody>
</table>

<div class="desc">
ОПИСАНИЕ 1
</div>


Задумка, что бы при нажатии на Название # (span), открывалось содержимое <div class="desc">, но только того, над которым было нажато название.
По умолчанию описание все скрыто
$(.desc).hide();

По необходимости можно изменить структуру HTML.

Solker
22.12.2009, 15:48
Надо пока скрипт ждет данных по AJAX. Крутил загрузку. Загрузка это не картинка, а поочерёдная замена следующих чаров: | / - \ .. Аля загрузка в ДОС.

Сейчас просто воткнуна фраза.
$('#load').html('Loading, please wait.');
И висит собственно, пока не придет дейт со скрипта.

Пытался изобразить что то на подобии

while(1)
{
$('#load').html('|');
$('#load').html('/');
$('#load').html('-');
$('#load').html('\');
}

Но все без исходно.

Deathdreams
22.12.2009, 21:21
Solker,

var res = false;

while(!res){

$('#load').html('|');
$('#load').html('/');
$('#load').html('-');
$('#load').html('\');

res = r.responseText; //ответ сервера в этой переменной

}

Сделал интуитивно, JQuery и жабаскрипт знаю только var да function :)

Solker
25.12.2009, 03:25
var sLoading = {
cfg: {
symbols: "|/-\\", // syms for use
speed: 150 // milisec-s
},
to: null,
go: function (id, i) {
var s = sLoading.cfg.symbols.split("");
i = i? (i >= s.length? 0 : i) : 0;
s = s[i];
document.getElementById(id).innerHTML = s;
sLoading.to = setTimeout(sLoading.go, sLoading.cfg.speed, id, ++i);
},
stop: function () { clearTimeout(sLoading.to) }
}
sLoading.go('load');