Вход

Просмотр полной версии : всплывающее окно в js


katjuha6
31.01.2013, 02:22
Всем доброго времени суток, уважаемые форумчане!
Я прошу прощения, что отвлекаю вас из-за совсем банального вопроса, но для меня js не понятен вообще никак и проблема стоит остро.
возникла задача как-то вызывать всплывающее окно при обработка данного запроса
function AddCompare(product) {
ProductsInCart.push(product);
var frm= $("frmProductCompare");
frm.product_id.value=product;
frm.func.value="comparisonAdd";
//frm.page.value = "shop.comparison_short";
handleUpdateCompare(frm);
}
из того, что я прочитала: надо создать html файл с разметкой окна и css файл. до этого момента понятно.
дальше все... =(
как это прописать в вышеуказанном коде?
в случае, если я задала какой-то совсем глупый вопрос - так и напишите. а то складывается впечатление, что я на форумах со стенами общаюсь.
заранее благодарна за любой ответ.:)

DjDiablo
31.01.2013, 02:58
Скажем прямо мало понятно что вы делаете
в качестве хоть какого то примера приведу стандартное окно/диалог из jqueryui.
Оригинал здесь http://jqueryui.com/dialog/#default

нажмите на play

<!doctype html>

<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery UI Dialog - Default functionality</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />
<script>
$(function() {
$( "#dialog" ).html("ВОТ ЗДЕСЬ БЫ МОГ БЫТЬ ВАШ КОНТЕНТ");
$( "#dialog" ).dialog();

});
</script>
</head>
<body>

<div id="dialog" title="Basic dialog"></div>

</body>
</html>

katjuha6
31.01.2013, 04:01
Уважаемый DjDiablo, благодарю за то, что Вы отозвались. сейчас попробую объяснить что я пытаюсь сделать. сразу оговорюсь, что программирование для меня пока что очень темный лес, поэтому прошу прощения за неверные формулировки.
в интернет-магазине есть сравнение товаров. когда нажимаешь на "сравнить" нужно чтобы появлялось окно с текстом "товар добавлен в сравнение". в скрипте изначально не продумана эта функция.
обработка запроса (добавление товара в сравнение, удаление товара из сравнения) происходит в js файле.
добавление товара в сравнение - вот этот вот кусок
function AddCompare(product) {
ProductsInCart.push(product);
var frm= $("frmProductCompare");
frm.product_id.value=product;
frm.func.value="comparisonAdd";
//frm.page.value = "shop.comparison_short";
handleUpdateCompare(frm);
}
как можно сюда приделать всплывающее окно.
или нужен полный код, чтобы понять?

ОлегА
31.01.2013, 07:44
или нужен полный код, чтобы понять?
да, из данного кода вообще ничего не понятно.

DjDiablo
31.01.2013, 11:34
Екатерина ваш код вырванный из контекста это всего лишь набор букв, смысл в слова закладывает программист в других частях программы, тот кусок который вы показываете без других частей программы не имеет смысла. Остаётся пальцев в небо тыкать в надежде попасть

мы можем попробывать прекрутить диалог к вашей странице
вставьте в заголовок head

<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />


гденибудь в теледокумента вставьте

<div id="dialog" title="Basic dialog">Товар добавлен в корзину..</div>

и немного измените скрипт дописав одну строчку вызывающую далог

function AddCompare(product) {
ProductsInCart.push(product);вы
var frm= $("frmProductCompare");
frm.product_id.value=product;
frm.func.value="comparisonAdd";
//frm.page.value = "shop.comparison_short";
handleUpdateCompare(frm);

$( "#dialog" ).dialog();
}


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

katjuha6
31.01.2013, 17:05
не работает. смотрите
http://test.katalliana.org/ru/internet-magazin/category/34-kresla-stulya.html
это страница со сравнением (чтобы Вам долго не ковыряться по всему сайту). когда добавляешь товар в сравнение - под списком товаров и перед модулем "Последние поступления" (внизу странички) появляется модуль сравнения. в данном случае окошко отображается в левом верхнем углу (текст - 123456), товары в сравнение не добавляются, модуль не появляется.
вот на этом сайте можете глянуть как выглядит сравнение http://testshop.katalliana.org/ru/internet-magazin/category/34-kresla-stulya.html
на всякий случай прикрепляю полный код скрипта
function removeByElement(arrayName,arrayElement) {
for(var i=0; i<arrayName.length;i++) {
if(arrayName[i]==arrayElement) arrayName.splice(i,1);
}
}
function CompareProduct(el, type_id) {
var Product_ID = el.name;
Product_ID = Product_ID.replace("compare_","");
//alert("ДО: productID="+Product_ID+" ProductsInCart.length="+ProductsInCart.length);
if (el.checked && CompareTypeID != -1 && type_id!=CompareTypeID) {
alert("Hельзя сравнивать товары разного типа");
return false;
}
else if (el.checked && ProductsInCart.length>=MaxProductToCompare) {
alert("Нельзя сравнивать более " + MaxProductToCompare + " продуктов одновременно");
return false;
}
else if (el.checked) {
CompareTypeID = type_id;
AddCompare(Product_ID);
}
else RemoveCompare(Product_ID);
//alert("ПОСЛЕ: productID="+Product_ID+" ProductsInCart.length="+ProductsInCart.length);
return true;

}
function AddCompare(product) {
ProductsInCart.push(product);вы
var frm= $("frmProductCompare");
frm.product_id.value=product;
frm.func.value="comparisonAdd";
//frm.page.value = "shop.comparison_short";
handleUpdateCompare(frm);

$( "#dialog" ).dialog();
}

function RemoveCompare(product) {
//alert(product);
removeByElement(ProductsInCart,product);
if (ProductsInCart.length<=0) CompareTypeID=-1;
//alert(ProductsInCart.length);
//alert(ProductsInCart[0]);
var frm= $("frmProductCompare");
frm.product_id.value=product;
frm.func.value="comparisonDelete";
handleUpdateCompare(frm);
}
//для удаления из сравнения на странице сравнения
function RemoveComparePage(product) {
//alert(product);
removeByElement(ProductsInCart,product);
var page;
if (ProductsInCart.length<=0){ CompareTypeID=-1; page = "shop.browse";}
else page = "shop.compare";
//alert(ProductsInCart.length);
var frm= $("frmProductCompare");
frm.product_id.value=product;
frm.func.value="comparisonDelete";
frm.page.value=page;
frm.compare_type.value = CompareTypeID;
frm.submit();
}
function ClearCompare() {
var el;
for(var i=0;i<ProductsInCart.length;i++){
//alert(ProductsInCart[i]);
el= $("compare_cart_"+ProductsInCart[i]);
if (el && el.checked) el.checked=false;
}
ProductsInCart=[];
//alert(ProductsInCart.length);
CompareTypeID=-1;
var frm= $("frmProductCompare");
frm.func.value="comparisonClear";
handleUpdateCompare(frm);
}
//Очистка на странице сравнения
function ClearComparePage() {
var el;
for(var i=0;i<ProductsInCart.length;i++){
//alert(ProductsInCart[i]);
el= $("compare_cart_"+ProductsInCart[i]);
if (el && el.checked) el.checked=false;
}
ProductsInCart=[];
//alert(ProductsInCart.length);
CompareTypeID=-1;
var frm= $("frmProductCompare");
frm.func.value="comparisonClear";
frm.page.value="shop.browse";
frm.submit();
}
/*function handleUpdateCompare( frm ) {
var callback = function(responseText) {
updateComparison()
//$("Compare_Thumb_Container").innerHTML=responseText;
ToggleCompareCheck(false);
}
var opt = {
method: "post",
data: frm,
onComplete: callback,
evalScripts: true
}
ToggleCompareCheck(true);
new Ajax(frm.action, opt).request();
}*/
//function updateComparison() {
/*
function handleUpdateCompare( frm ) {
alert(frm.func.value);
var callbackCart = function(responseText) {
carts = $$( '.vmComparisonModule' );
if( carts ) {
try {
for (var i=0; i<carts.length; i++){
carts[i].innerHTML = responseText;
color = carts[i].getStyle( 'color' );
bgcolor = carts[i].getStyle( 'background-color' );
if( bgcolor == 'transparent' ) {
// If the current element has no background color, it is transparent.
// We can't make a highlight without knowing about the real background color,
// so let's loop up to the next parent that has a BG Color
parent = carts[i].getParent();
while( parent && bgcolor == 'transparent' ) {
bgcolor = parent.getStyle( 'background-color' );
parent = parent.getParent();
}
}
var fxc = new Fx.Style(carts[i], 'color', {duration: 1000});
var fxbgc = new Fx.Style(carts[i], 'background-color', {duration: 1000});

fxc.start( '#222', color );
fxbgc.start( '#fff68f', bgcolor );
//if( parent ) {
// setTimeout( "carts[" + i + "].setStyle( 'background-color', 'transparent' )", 1000 );
//}
}
} catch(e) {}
}
ToggleCompareCheck(false);
}
//option = { method: 'POST', onComplete: callbackCart }
var frm1 = { only_page:1,
page: frm.page.value,
category_id: frm.category_id.value,
product_id: frm.product_id.value,
func: "comparisonAdd",
compare_type: frm.compare_type.value,
Itemid: frm.Itemid.value,
option: frm.option.value
}
var opt = {
method: "post",
data: frm1,
//data: { only_page:1, option: "com_virtuemart", page: frm.page.value },
onComplete: callbackCart,
evalScripts: true
//?page=shop.comparison_short
}
ToggleCompareCheck(true);
new Ajax('http://joom15/index2.php?page=shop.comparison_short', opt).request();
}
*/
function handleUpdateCompare( frm ) {
var callback = function(responseText) {
updateComparison()
//$("Compare_Thumb_Container").innerHTML=responseText;
ToggleCompareCheck(false);
}

var opt = {
method: "post",
data: frm,
onComplete: callback,
evalScripts: true
}

ToggleCompareCheck(true);
new Ajax(frm.action, opt).request();
}

function updateComparison() {
var callbackCart = function(responseText) {
carts = $$( '.vmComparisonModule' );
if( carts ) {
try {
for (var i=0; i<carts.length; i++){
carts[i].innerHTML = responseText;
color = carts[i].getStyle( 'color' );
bgcolor = carts[i].getStyle( 'background-color' );
if( bgcolor == 'transparent' ) {
// If the current element has no background color, it is transparent.
// We can't make a highlight without knowing about the real background color,
// so let's loop up to the next parent that has a BG Color
parent = carts[i].getParent();
while( parent && bgcolor == 'transparent' ) {
bgcolor = parent.getStyle( 'background-color' );
parent = parent.getParent();
}
}
var fxc = new Fx.Style(carts[i], 'color', {duration: 1000});
var fxbgc = new Fx.Style(carts[i], 'background-color', {duration: 1000});

fxc.start( '#222', color );
fxbgc.start( '#fff68f', bgcolor );
if( parent ) {
setTimeout( "carts[" + i + "].setStyle( 'background-color', 'transparent' )", 1000 );
}
}
} catch(e) {}
}
}
option = { method: 'POST', onComplete: callbackCart }
new Ajax('index2.php?only_page=1&page=shop.comparison_short&option=com_virtuemart', option).request();
}

function ToggleCompareCheck(disabled) {
var a = $$(".compare_checkbox");
for (i=0; i<a.length; i++) a[i].disabled=disabled;
}
function RemoveCompareCheck(product) {
var el= $("compare_cart_"+product);
if (el && el.checked) el.checked=false;
RemoveCompare(product+'');
}

function handleGoToCompare() {
if (!ProductsInCart || ProductsInCart.length<2) {
alert("You must select 2 or more products to compare!");
return;
}
var frm= $("frmProductCompare");
frm.page.value="shop.compare";
frm.compare_type.value = CompareTypeID;
frm.func.value="";
frm.submit();
}
function GoToCatalog() {
var frm= $("frmProductCompare");
if(frm.category_id.value>0)
frm.page.value="shop.browse";
else frm.page.value="";
frm.func.value="";
frm.submit();
}

katjuha6
31.01.2013, 18:34
еще не работают 2 боковых слайдера и не грузится опрос в правой колонке.
такое чувство, что там конфликт скриптов. =(

DjDiablo
31.01.2013, 21:56
всё верно
это конфлиет mootools и jquery

рецепт
http://nauca.com.ua/zametki/resolve-conflicts-jquery-mootools/

соответственно и строчка инициализации будет
jQuery( "#dialog" ).dialog();

katjuha6
31.01.2013, 22:04
понятно, но очень образно
вот содержимое HEAD
<link rel="stylesheet" type="text/css" href="<?php echo $this->baseurl ?>/modules/mod_slider/css/style.css"/>
<script type="text/javascript" src="/modules/mod_slider/lib/slider.js"></script>

<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />
jQuery.noConflict(); - где-то тут прописывается?
или в slider.js
дело в том, что из прочитанного я мало что поняла, поэтому прошу прощения, что задаю глупый вопрос.

DjDiablo
31.01.2013, 22:12
вот здесь я подключил оба фреймворка и всё работает

<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>

<script src="http://www.alexilin.ru/web/animated_menu/mootools.js"></script>
<script>
jQuery(function(){
alert("всё работает");
})
</script>


я так понимаю это joomla и вас интерисует тема подклчения jquery к joonla

есть альтернативнй подход к примеру использовать mootools плагин, если найдёте вменяемый.

katjuha6
31.01.2013, 22:28
написала вот так
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>

<script src="http://www.alexilin.ru/web/animated_menu/mootools.js"></script>
<script>
jQuery(function(){
alert("всё работает");
})
</script>

<script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />
скорее всего что-то неправильно - т.к. слайдер работает только на один щелчок.
видимо не дано мне этого пока понять. в любом случае, DjDiablo, спасибо за помощь))))

DjDiablo
31.01.2013, 22:32
пример решения без jQuery на чистом mootools
плагин FbModal
https://github.com/cnizzdotcom/FbModal

всё тоже самое что и с jquery только вместо jQuery( "#dialog" ).dialog();
нужно написать
modal = new FbModal({
'parentEl': 'Content',
'title': 'My Modal',
'subTitle': 'This is the FB Modal demo.',
'content': 'Ваш товар успешно добавлен',
'height' : 330,
'width' : 800
});



<script type="text/javascript" src="http://www.cnizz.com/js/mootools-1.2.4-core.js"></script>
<link rel="stylesheet" media="screen" href="http://www.cnizz.com/mootools/fb-modal/style.css" type="text/css" />
<script type="text/javascript" src="http://www.cnizz.com/mootools/fb-modal/FbModal.class.js"></script>
<div id="Content"></div>
<script>
var modal;

window.addEvent('domready',function(){
modal = new FbModal({
'parentEl': 'Content',
'title': 'My Modal',
'subTitle': 'This is the FB Modal demo.',
'content': 'Товар добавлен.',
'height' : 330,
'width' : 800
});
});
</script>

katjuha6
31.01.2013, 23:01
уважаемый DjDiablo! я очень признательна Вам за то, что Вы искренне хотите мне помочь, но к сожалению, я понимаю, что сама я с этим не справлюсь. не тратьте на меня время.
либо, если Вы не против, давайте сделаем так: я Вам сейчас сброшу 2 файла - index.php и js, а Вы там напишете то, что надо. я прошу прощения, что я окончательно обнаглела. просто я прекрасно знаю, что такое объяснять что-либо человеку, который ВООБЩЕ ничего не понимает. очень хочется этого человека убить... =)