Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Как на canvas холсте вызвать всплывающую форму для ввода имени

Ест canvas холст с игровым меню

или


Нужно, при нажатии на кнопку открыть всплывающее окно (заданного размера и с опред. фоном) для ввода имени, которая после сохраняется в переменную

Нельзя ли это реализовать на canvas, или предложите ваши идеи (на js/jquery)
Ответ: Как им пользоваться? Первый раз слышу. Можете скинуть на страницу с гайдом на русском или написать форму простенькую в jsfiddle ?
Вопрос: Кодировка всплывающей формы

Несколько раз доводилось видеть на сайтах ситуацию, когда при клике всплывает форма с кракозябрами вместо букв. Причина ясна - браузер не понял кодировку всплывающей формы.

Сейчас хочу на своём сайте поставить форму обратной связи на основе модального окна .

Как полагаете, в этом скрипте тоже возможна ситуация с нарушением кодировки?

Если так, то как её избежать?
Ответ:
Сообщение от vlad-55
Применительно к данному примеру так?
Совершенно верно... vlad-55, в файле - js не надо ничего передавать, главное, чтобы кодировка была верной на странице формы... Я имел ввиду ситуацию, когда форма находится в php-файле...
Вопрос: Всплывающая форма на jquery

Здравствуйте помогите понять в чем причина.
На сайте под управлением движка joostina 1.2 не появляется всплывающее окно обратной связи.
Ссылка на окно вставлена в материал. В режиме предпросмотра все работает,но на самом сайте нет.
код:
<<title>Всплывающая форма отправки данных - blog.sklazer.com</title>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link
href="http://tetrabel.by/js/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" media="screen" />
<link
href="http://tetrabel.by/css/style.css" rel="stylesheet" type="text/css" />
<div
id="popupform">
<h2>
Узнайте подробности акции:</h2>
<div
class="comment">
каскадные скидки, весомые подарки, шампанское, угощение и т.д.
</div>
<form
method="post" id="form-feedback">
<input
placeholder="Ваше имя" name="name" id="name" class="input_text" type="text" />
<div
id="bthrow_error_name">
</div>
<input
placeholder="Контактный телефон " name="phone" id="phone" class="input_text" type="text" />
<div
id="bthrow_error_phone">
</div>
<input
class="button" value="Узнать подробности" type="submit" />
<div
class="throw_error">
</div>
</form>
</div>

<a
href="#popupform" id="popupbutton"><img src="/images/stories/70350px3.gif" style="float: left; margin: 5px; width: 350px; height: 295px" title="70350px2.gif" alt="70350px2.gif" /></a>
<script
src="http://tetrabel.by/js1/jquery-1.10.1.min.js" type="text/javascript">
</script>
<script
src="http://tetrabel.by/js1/jquery.fancybox.pack.js?v=2.1.5" type="text/javascript">
</script>
<script
src="http://tetrabel.by/js1/jquery.mask.min.js" type="text/javascript">
</script>
<script
src="http://tetrabel.by/js1/script.js" type="text/javascript">
</script>


Это сообщение отредактировал sergeiss - 18.07.2015 - 17:16
Ответ: не работает даже на стандартном шаблоне
Вопрос: Не выводится всплывающая форма

Всем добрый день! Столкнулся с такой проблемой, дали ТЗ с доработкой сайта. Все работает хорошо, где то еще не до конца допилил, но вот при нажатие кнопки заказать, должна всплывать форма (Имя, тел., адрес доставки). По коду вроде все нормально (код со строки 1296), но при нажатии на кнопку ничего не происходит! Подскажите пожалуйста где косяк?!
Адрес сайта:
Код страницы прилагается!
Ответ: Medji, тут никак не помочь. Насколько я понял, core.js сгенерирован заранее на стороне сервера. Как возможный вариант - заставить сервер на какое-то время выдавать исходную версию core.js, а не сжатую, как сейчас. В исходной версии можно нагляднее понимать, что там не так.
Вопрос: Формы ввода для функции java script

Здравствуйте. Как создать форму ввода данных: "Исходное число", "Основание системы счисления исходного числа", "Основание системы счисления переведенного числа","Переведенное число"; для функции которая переводит число с одной системы исчисления в другую
Код Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function laba( source, sourcebase, targetbase, target ) {
var ends = new Array( );
function divide( one, base ) {
ends[ ends.length ] = one % base;
var res = Math.floor( one / base );
if ( res >= base )divide( res, base ); else ends[ ends.length ] = res;
}
var dec = 0;
var power = 0;
var error = false;
for ( var i = source.length - 1;
i >= 0;
— i ) {
      var code = source.charCodeAt( i );
if ( code >= 58 )code -= 55; else if ( code >= 48 )code -= 48;
if ( code >= sourcebase ) {
error = true;
break;
}
dec += code * Math.pow( sourcebase, power ++ );
}
if ( error ) {
target.SetValue( "?" );
} else {
divide( dec, targetbase );
       var result = "";
for ( var i = ends.length - 1;
i >= 0;
— i ) {
if ( ends[ i ] < 10 )result += String.fromCharCode( ends[ i ] + 48 ); else result += String.fromCharCode( ends[ i ] + 55 );
}
target.SetValue( result );
}
}
Ответ: А как это все записать в простой html документ?
Код HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
 <head>
  <script>
  inVal.onkeyup = inVal.onchange = outSys.onchange = outSys.onkeyup = inSys.onchange = inSys.onkeyup = function () {
    outVal.innerHTML = parseInt(inVal.value, +inSys.value).toString(+outSys.value);
};
  </script>
 </head>
 <body>
введите изначальное число
<input type="text" id="inVal">, выберите его систему исчисления(0т 2 до 36)
<input type="number" min="2" max="36" id="inSys" value="10">
<br>
<br>выберите систему исчисления результата
<input type="number" min="2" max="36" value="16" id="outSys">
<br>
<br>конечное число: <span id="outVal"></span>
 </body>
</html>
Это не правильно я записал, а как правильно?

Добавлено через 6 минут
Я уже понял, я не туда скрипт вставил. Спасибо.
Вопрос: Формы ввода для java script

Здравствуйте. Как создать форму ввода данных: "Выражение для расчета
", "Основание системы счисления, в которой записано выражение", "Точность преобразования дробных чисел (разрядов)","Результат вычисления (в указанной системе счисления)", "Результат вычисления (десятичный)"; для функции которая выполняет арифметические операции над числами в разных системах счисления.
Код Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
function Calculate( res, formulaText, sourcebase, precision, finalResultN, finalResult ) {
    function customBNFGrammar( ) {
        this[ "digit" ] = {
            "t" : "|", "v" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" ]
        };
        this[ "plus sign" ] = "+";
        this[ "power sign" ] = "^";
        this[ "minus sign" ] = "-";
        this[ "dot" ] = ".";
        this[ "left paren" ] = "(";
        this[ "right paren" ] = ")";
        this[ "asterisk" ] = "*";
        this[ "solidus" ] = "/";
        this[ "unsigned integer" ] = {
            "t" : "&", "v" : [ {
                "t" : "->", "v" : "digit"
            }
            , {
                "t" : "*", "v" : {
                    "t" : "->", "v" : "digit"
                }
            }
            ]
        };
        this[ "exact numeric literal" ] = {
            "t" : "|", "v" : [ {
                "t" : "&", "v" : [ {
                    "t" : "->", "v" : "unsigned integer"
                }
                , {
                    "t" : "|", "v" : [ {
                        "t" : "&", "v" : [ {
                            "t" : "->", "v" : "dot"
                        }
                        , {
                            "t" : "|", "v" : [ {
                                "t" : "->", "v" : "unsigned integer"
                            }
                            , "" ]
                        }
                        ]
                    }
                    , "" ]
                }
                ]
            }
            , {
                "t" : "&", "v" : [ {
                    "t" : "->", "v" : "dot"
                }
                , {
                    "t" : "->", "v" : "unsigned integer"
                }
                ]
            }
            ]
        };
        this[ "signed integer" ] = {
            "t" : "&", "v" : [ {
                "t" : "|", "v" : [ {
                    "t" : "->", "v" : "sign"
                }
                , "" ]
            }
            , {
                "t" : "->", "v" : "unsigned integer"
            }
            ]
        };
        this[ "sign" ] = {
            "t" : "|", "v" : [ {
                "t" : "->", "v" : "plus sign"
            }
            , {
                "t" : "->", "v" : "minus sign"
            }
            ]
        };
        this[ "unsigned numeric literal" ] = {
            "t" : "->", "v" : "exact numeric literal"
        };
        this[ "paren expression" ] = {
            "t" : "&", "v" : [ {
                "t" : "->", "v" : "left paren"
            }
            , {
                "t" : "->", "v" : "expression"
            }
            , {
                "t" : "->", "v" : "right paren"
            }
            ]
        };
        this[ "value" ] = {
            "t" : "|", "v" : [ {
                "t" : "->", "v" : "unsigned numeric literal"
            }
            , {
                "t" : "->", "v" : "paren expression"
            }
            ]
        };
        this[ "factor" ] = {
            "t" : "&", "v" : [ {
                "t" : "|", "v" : [ {
                    "t" : "->", "v" : "sign"
                }
                , "" ]
            }
            , {
                "t" : "->", "v" : "value"
            }
            ]
        };
        this[ "factoroperator" ] = {
            "t" : "|", "v" : [ {
                "t" : "->", "v" : "asterisk"
            }
            , {
                "t" : "->", "v" : "solidus"
            }
            ]
        };
        this[ "power" ] = {
            "t" : "&", "v" : [ {
                "t" : "->", "v" : "factor"
            }
            , {
                "t" : "*", "v" : {
                    "t" : "&", "v" : [ {
                        "t" : "->", "v" : "power sign"
                    }
                    , {
                        "t" : "->", "v" : "factor"
                    }
                    ]
                }
            }
            ]
        };
        this[ "product" ] = {
            "t" : "&", "v" : [ {
                "t" : "->", "v" : "power"
            }
            , {
                "t" : "*", "v" : {
                    "t" : "&", "v" : [ {
                        "t" : "->", "v" : "factoroperator"
                    }
                    , {
                        "t" : "->", "v" : "power"
                    }
                    ]
                }
            }
            ]
        };
        this[ "sum" ] = {
            "t" : "&", "v" : [ {
                "t" : "->", "v" : "product"
            }
            , {
                "t" : "*", "v" : {
                    "t" : "&", "v" : [ {
                        "t" : "->", "v" : "sign"
                    }
                    , {
                        "t" : "->", "v" : "product"
                    }
                    ]
                }
            }
            ]
        };
        this[ "expression" ] = {
            "t" : "->", "v" : "sum"
        };
        this._getRootRule = function ( ) {
            return {
                "t" : "->", "v" : "expression"
            };
        }
    }
    function getN( source, sbase, tprecision ) {
        var result = Planetcalc.Calculate856( {
            "source" : source, "sourcebase" : sbase, "targetbase" : 10, "targetprecision" : tprecision
        }
        );
        //-----  Выходные параметры  -----
        //result.target  - Переведенное число (Строка)
        //result.targeterror     - Погрешность перевода (в десятичном выражении) (Число)
        //result.sourcedec   - Исходное число в десятичной системе счисления (Число)
        //result.targetdec   - Переведенное число в десятичной системе счисления (Число)
        //result.maxerror    - Максимальная погрешность перевода (в десятичном выражении) (Число)
        //result.placeholder     - Детали перевода (Строка)
        return Number( result.targetdec );
    }
    function getR( source, tbase, tprecision ) {
        var result = Planetcalc.Calculate856( {
            "source" : String( source ), "sourcebase" : 10, "targetbase" : tbase, "targetprecision" : tprecision
        }
        );
        //-----  Выходные параметры  -----
        //result.target  - Переведенное число (Строка)
        //result.targeterror     - Погрешность перевода (в десятичном выражении) (Число)
        //result.sourcedec   - Исходное число в десятичной системе счисления (Число)
        //result.targetdec   - Переведенное число в десятичной системе счисления (Число)
        //result.maxerror    - Максимальная погрешность перевода (в десятичном выражении) (Число)
        //result.placeholder     - Детали перевода (Строка)
        return result.target;
    }
    var rules = new customBNFGrammar( );
    if ( ! PCI.checkrules( rules ) ) {
        displayError( res.rulesError );
        return;
    }
    var stream = new PCI.parserLine( formulaText );
    var syntaxTree = PCI.match( stream, rules, rules._getRootRule( ) );
    if ( ! syntaxTree ) {
        displayError( res.funcError + ' "' + stream.remainder( ) + '"' );
        return;
    }
    //patch standard math object for binary math
    PCM[ "getNumber" ] = function ( arg ) {
        var t = typeof ( arg );
        if ( t == 'number' || t == 'string' ) {
            return getN( String( arg ), sourcebase, precision );
        }
        return getN( arg.getValue( ), sourcebase, precision );
    }
    var src = PCM.translate( syntaxTree );
    var res = PCM.calculate( src, {
        "x" : 0
    }
    );
    finalResult.SetValue( res );
    finalResultN.SetValue( res >= 0 ? getR( res, sourcebase, precision ) : ( "-" + getR( Math.abs( res ), sourcebase, precision ) ) );
    function displayError( txt ) {
        throw {
            "source" : "formulaText", "message" : txt
        };
    }
}
Ответ: Вот это код, первый раз такой вижу, как шахматы
Вопрос: Форма ввода для комментариев

Требуется создать форма ввода для комментариев с выводом оставшихся количества символом.
Допустим ввести можно максимум 15 символов, ввел 10, где-то снизу должно быть написано "Осталось 5 символов".
А если количество превышено, допустим 20 символов, то "Превышено допустимое число на 5 символов".
Ответ:
Сообщение от Balanaar
Не может человек в склонением
Это называется тупая копипаста, ТС даже не удосужился прочитать, что пишет на форум.
Вопрос: Создать пушку на canvas и js

Задача:1. надо с помощью элемента canvas(холста) и js нарисовать пушку (2 прямоугольника черный и коричневый) 2.черный прямоугольник постоянно будет вращаться 3. из вращающегося прямоугольника каждую секунду будут выстреливать снаряды в разные стороны(этот пункт самый сложный как по мне)
Примечание: первые два пункта я уже сделал, мне нужно чтобы кто-то из вас сделал 3 пункт( я его уже 3 часа немогу сделать ) помогите пожалуйста!

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>


</head>

<body>
<canvas id="myCanvas" width="700" height="600"style="border:1px solid black;"></canvas>
 <script>

</script>
</body>
</html>




var canvas = document.getElementById("myCanvas");

var ctx = canvas.getContext("2d");
var bullet3 = -10;
var bullet2 = -10;
var bullet = -10;
var angle = 1;
var health = 40;

var x = 310;	
var y = 110;

var xy = 158;

 var massiv = ["angle","0"];
var cvet = ["white","red"]; //цвет полоски жизни
var okraska = ["white","black"]; //цвет обводки полоски жизни
    
var mybase = {   //массив
    color:"#48260D", //цвет базы
    x:100,           //кординаты базы по горизонтали и вертикали
    y:100, 
    height:40,    //размеры базы 
    width:40,
    description:"base,"}; //информация
 

var alienbase = {
   color:"#48260D", //цвет базы
    x:100,           //кординаты базы по горизонтали и вертикали
    y:100, 
    height:40,    //размеры базы 
    width:40,
    description:"alien base,"}; //информация






console.log(mybase.color); 

function draw(x, y) {

 
 ctx.fillStyle = "black";
 ctx.fillRect(x,y,20,20);
 console.log(x);

  //ctx.drawImage(imagesi,x,y,40,40);
 ctx.fillStyle = mybase.color;
 //вет базы
 ctx.fillRect(mybase.x, mybase.y, mybase.height,mybase.width);
 ctx.fillRect(mybase.x+200,mybase.y, mybase.height,mybase.width);
 //базы
ctx.fillRect(mybase.x+200,mybase.y+300,mybase.height,mybase.width);
ctx.save();
//var angle = 1;
ctx.translate(320,420);//координаты где будет вращаться обьект
ctx.rotate(this.angle);
//ctx.scale(0.3,0.3);
 
 ctx.fillStyle = "black"; //Нижний прямоугольник
 ctx.fillRect(-10,-10,20,20);
  

if (bullet == -10) {
ctx.restore();
ctx.save();

ctx.save();
//var angle = 1;
ctx.translate(320,420);//координаты где будет вращаться обьект
ctx.rotate(this.angle);
ctx.fillStyle = "black";
ctx.fillRect(bullet,-2,15,8);
ctx.restore();
ctx.save();

} else{
    ctx.restore();
 

ctx.save();
//var angle = 1;
ctx.translate(320,420);
	ctx.rotate(0);
	ctx.fillStyle = "black";
ctx.fillRect(bullet,-2,15,8);

if ( bullet>30 ) {
   ctx.fillRect(bullet2,-2,15,8);
}
if ( bullet>60 ) {
   ctx.fillRect(bullet3,-2,15,8);
} 
ctx.restore();
ctx.save();

	 


}
 
if( health > 0){
	ctx.fillStyle = cvet[1];
	ctx.strokeStyle = okraska[1];} 
	else { 
		
		ctx.fillStyle = cvet[0];
		ctx.strokeStyle = okraska[0];}

 
ctx.fillRect(100,85,40,10); //полоска жизни
ctx.fillRect(300,85,health,10); //полоска жизни


if(x < 160){ 
 //если обьект больше координат 260 то:
      x++; //остановка
      this.x++; //остановка обьекта
      ctx.fillStyle = "black"; //цвет обьекта
      ctx.fillRect(xy,115,7,4); //обьект
      xy-=1;  //скорость пули обьекта };
 this.xy-=1;}
 
   
if(xy < 110){ this.xy = 158;
ctx.strokeStyle = 'black';
ctx.strokeRect(100,85,40,10);  //обводка полоски жизни mybase
   ctx.strokeRect(300,85,40,10); } //обводка полоски жизни }
ctx.save();
//var angle = 1;
ctx.translate(400,200);//координаты где будет вращаться обьект
ctx.rotate(this.angle);
//ctx.scale(0.3,0.3);
  
 ctx.fillStyle = "black";
 ctx.fillRect(-10,-10,20,20);
ctx.restore();
ctx.save();
}



 function move() {
   x-=1; //скорости всех обьектов
   bullet++;
   
   
	if ( bullet>30 ) {
		bullet2++;
	}
	if ( bullet>60 ) {
		bullet3++;
	} 


  this.angle+=Math.PI/180; //angle++;
}

 function game() {
       ctx.clearRect(0, 0, canvas.width, canvas.height);
       move();
       draw(x, y);
       requestAnimationFrame(game)
  

} 
 //callback(game);
 
var imagesi = new Image();
imagesi.onload = game;
imagesi.src="tank.png";




p.s пушка это нижние 2 прямоугольника
Ответ: Кто сделал пушку ?
Вопрос: Кастомная всплывающая форма

Суть такова, есть окно, оно само всплывающее(popup), и очень чувствительно ко всяким изменениям размеров. Так вот в этом окне есть много чекбоксов, при нажатии на которые должно вылезти маленькое окошечко с вводом цифр и кнопкой. Всё это сделал, но когда div'ы отображаются всё окно съезжает + отображается вверху. Особо не разбираюсь, но видимо им тоже место нужно, хотел сначала при показе формы скрыть часть страницы, но это фигня какая - то получается, фон - то полупрозрачный, будет видно, что 4 строки из таблицы пропали. Можно как - то сделать, чтобы эти 2 div'а не занимали места, а кнопки и input просто накладывались на таблицу?

CSS
1
2
3
4
5
6
7
.form_fade{display: none; position: absolute; top: 0%; left: 0%; width: 400px; height: 480px; background-color: black; z-index:1001; -moz-opacity: 0.7; opacity:.70; filter: alpha(opacity=70);}
.form_abuy {width: 133px; height: 50px; display: none; position: absolute; background-color: #e5e5e5; border:2px #ffd800 solid; z-index:1002; position: relative; margin: 10% auto;}
.form_close {width: 20px; height: 20px; display: block; cursor: pointer; background: url(images/close.png); text-indent: -4999px; border-radius: 50px; position: absolute; top: -10px; left: 125px;}
.form_close:hover{background: url(images/close-hover.png);}
.form_text {position: absolute; top: -11px; left: 6px;}
.form_number {position: absolute; top: 22px; left: 6px; width: 80px;}
.form_button {position: absolute; top: 22px; left: 95px;}
HTML5
1
2
3
4
5
6
7
<div class="form_abuy">
    <span class="form_close" title="Закрыть"></span>
    <pre class="form_text">Сколько закупать:</pre>
    <input class="form_number" type="number" id="tb_delay" min="1" max="9999" value="1">
    <input class="form_button" type="button" value="Ок">
</div>
<div class="form_fade"></div>
На первом скрине открытое окно, на втором нажал на чексбокс, на третьем закрыл форму.

Ответ: Во, вот так position: absolute и fixed перестало страницу расширять, осталось по центру выровнять, а то сейчас форма к левому краю прижалась...

Добавлено через 9 минут
Всё, получилось )
CSS
1
.form_abuy {width: 132px; height: 50px; display: none; position: absolute; background-color: #e5e5e5; border:2px #ffd800 solid; z-index:1002; position: fixed; top: 50%; left: 50%; margin: -25px 0 0 -66px;}
Вопрос: при клике по ссылке проголосовать всплывает окно с формой

Доброго времени суток, столкнулся с такой задачей: есть сайт на Джумла 2.5 и компонент галереи на котором организован фотоконкурс,
требуется повесить всплывающую форму, которая появляется после нажатия по кнопке "голосовать" и перезагрузки страницы

т.е. должно сработать два события 1- отправка голоса и вызов всплывающей формы.

Подскажите как мне лучше это сделать и вообще возможно ли такое на JS?

Может есть готовые примеры реализации данной возможности?

пример страницы где это планируется сделать:

Спасибо за помощь.
Ответ: Немного поясню:

есть ссылка которая формируется PHP
echo '<li><a href="'.$this->tmpl['action'].$amp.'controller=category&task=rate&rating=5&tab= '.$this->tmpl['currenttab']['rating'].$this->tmpl['limitstarturl'].'" title="Проголосовать" class="stars5">5</a></li>';

в конечном итоге имеет такой вид:

(при клике по которой происходит голосование за категорию и выводится сообщение об успехе или же что вы проголосовали, с перезагрузкой страницы.)

поставил форму которая всплывает по клику (onclick) по данной ссылке но пропадает, т.к. страница перезагружается
код: echo '<li><a href="'.$this->tmpl['action'].$amp.'controller=category&task=rate&rating=5&tab= '.$this->tmpl['currenttab']['rating'].$this->tmpl['limitstarturl'].'" title="Проголосовать" class="stars5" onclick="pwebContact182.toggleForm();">5</a></li>';


вопрос как мне реализовать чтобы всплывающая форма не закрывалась (оставалась активной после голосования)?

что приходит на ум так это:
- сделать ссылку на ajax (не представляю что для этого нужно и как реализовать)
- сделать спомощью js блокировку голосования пока всплывающая форма не будет закрыта (так же не знаю как правильно это прописать)
- как то сделать что форма всплывает только после перехода по этой ссылке и загрузке страницы с сообщением об успехе или что вы уже проголосовали

возможно ли вообще такое реализовать? или может есть какие другие варианты решения данной задачи?

не особо силен в js поэтому прошу помочь советом или ссылкой может кто уже реализовывал подобный функционал.