[JavaScript, AJAX] Задай вопрос, получи ответ

Discussion in 'PHP' started by banned, 9 Jun 2007.

Thread Status:
Not open for further replies.
  1. Impuls*

    Impuls* Elder - Старейшина

    Joined:
    3 Oct 2007
    Messages:
    75
    Likes Received:
    6
    Reputations:
    -1
    Не надо репу, не буду тебе добавлять, это такая плата просто :)

    ПМ на то и пм, что "левые" люди не увидят, если вдруг эта инфа не должна попасть в другие руки, чисто в целях безопасности :p
     
  2. dinar_007

    dinar_007 Мадемуазель

    Joined:
    18 Jan 2005
    Messages:
    1,019
    Likes Received:
    770
    Reputations:
    97
    HTML:
    <html>
    <head>
    <script>
    function check () {
    var ref1 = document.getElementById('text');
    var ref2 = document.getElementById('button');
    if (ref1.value != '') ref2.disabled = false; else ref2.disabled = true;
    }
    </script>
    <head>
    <body onload="check()">
    <input id="text" type="text" value="" onkeyup="check()" onkeydown="check()" />
    <input id="button" type="button" value="Йа мля кнопка нах )))" />
    <body/>
    <html>
    Держи...
     
    #222 dinar_007, 26 Dec 2007
    Last edited: 26 Dec 2007
  3. spamoney

    spamoney Elder - Старейшина

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Всем привет!
    Такой вопрос, как сделать, чтобы при нажатии на ссылку перезагружалась только картинка, а не вся страница.
    пробывал так:
    Code:
    $content="<a href=\"../kcaptcha/index.php?".session_name()."=".session_id()."\" onclick=\"document.getElementById('image_id').src=this.href; return false;\">Обновить картинку</a>
    <img src=\"../kcaptcha/index.php?".session_name()."=".session_id()."\" id=\"image_id\">";
    
    но чет не получается((

    З.Ы
    картинка это капча, поэтому ссылка на нёё имеет такой вид:
    Code:
    ../kcaptcha/index.php?".session_name()."=".session_id()."
     
  4. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Да почему сразу Ajax! Можно и банально:

    Code:
    <script>
    function reload () {
    var blabla = document.getElementById('img');
    var img = new Image;
    img.src = '../kcaptcha/index.php?session_name=<?=session_id()?>';
    blabla.src = img.src;
    }
    </script>
    <!-- Это капча --!>
    <img id="img" src="blablabla/yousuck.jpg" />
    <input type="button" onclick="reload()" value="RELOAD"/>
     
  5. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    AJAX тут не при чём - он вернёт только текст.
    По-моему, всё дело в кешировании. Картинка не перезагружается, т.к. url остаётся один и тот же.
    PHP:
    $out '
        <img src="../kcaptcha/index.php?'
    .session_name().'='.session_id().'&r='.rand(0,999999).'">
        <a href="#" onclick="document.images[0].src=\'../kcaptcha/index.php?'
    .session_name().'='.session_id().'&r=\'+Math.floor(Math.random()*1000000);return false;">Обновить</a>
    '
    ;
    echo 
    $out;
     
    1 person likes this.
  6. spamoney

    spamoney Elder - Старейшина

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Всем спасибо, astrologer был прав из-за постоянного урла картинки, они повидимому и не менялась...
     
  7. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Вообще задача черезжопная и требует черезжопного решения... А почему бы тебе не выделить нужную функцию в js файл и не подключать его по мере надобности? Если задача такого не позволяет тогда вот решение:

    index.html:
    Code:
    <html>
    <head>
    <!-- Обрати внимание, что контейнер с айдишником -->
    <script id="target_js">
    function foo () {
    	alert('foo');   // Функция просто выводит 'foo'
    }
    </script>
    </head>
    <body>
    <!-- Наш фрейм -->
    <iframe src="frame.html"></iframe>
    <body>
    </html>
    frame.html:
    Code:
    <html>
    <head>
    <script>
    function bar () {
    	alert('bar');   // Выводим 'bar'
    	// Получаем доступ к содержимому яваскрипта из родительской страницы
    	// и выполняем через eval. После этого в области видимости этой страницы
    	// будет видна функция родительской страницы и её можно будет вызвать.
    	eval(parent.document.getElementById('target_js').text);
    	foo();
    }
    </script>
    </head>
    <body>
    <input type="button" value="Тыкни меня" onclick="bar()">
    </body>
    </html>
    А по второй задаче почитай это:

    http://www.mozilla.org/editor/midas-spec.html
    http://msdn2.microsoft.com/en-us/library/ms533049.aspx
     
    #227 groundhog, 28 Dec 2007
    Last edited: 28 Dec 2007
  8. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Никак. Это вложенная функция будет видна только внутри родительской.
    // Читать: никак, если использовать стандартные и не извращённые методы

    Code:
    <script type="text/javascript">
    <!--
    
    var main_function = new function()
    {
      this.target_function = function(){}
    }
    
    //-->
    </script>
    
    А так - нужная ф-ия будет доступна как main_function.target_function

    Если нужно сохранить именно такую структуру, код которой ты привёл, то решение тоже есть, но нужно ли?

    ----------------------------------------------------------------------

    Вот так вроде работает:
    1.html
    Code:
    <html>
    <head>
    <script type="text/javascript">
    
    function wrapper() 
    {
      function needed()
      {
        alert('Got it!');
      }
    }
    
    </script>
    </head>
    <body>
      Main<br />
      <iframe src="2.html"></iframe>
    </body>
    </html>
    
    2.html
    Code:
    <html>
    <head>
    <script type="text/javascript">
    function getNeeded()
    {
      // Переводим функцию в строковый вид для обработки
      var str = new String(top.wrapper);
    
      // Удаляем первую фигурную скобку,
      // всё, что идёт до неё и последнюю - избавляясь от внешней функции
      str = str.replace(/^[^{]+{/, '');
      str = str.substring(0, str.length-1);
    
      // Заменяем "закрытые" объявления функций на "открытые"
      // Всё это условно, т.к. работаем всё ещё со строкой
      // Может понадобиться изменить регулярное выражение
      str = str.replace(/function\s*([^\(\s]*)\s*/ig, 'this.$1 = function');
    
      str = new Function(str); // Создаём функцию
      var created = new str;   // Создаём экземпляр
      created.needed();        // Запускаем
    }
    </script>
    </head>
    <body>
      <a href="#" onclick="getNeeded();return false;">Click</a>
    </body>
    </html>
    
     
    #228 astrologer, 28 Dec 2007
    Last edited: 28 Dec 2007
  9. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Конечно не работает. Код не верный.
    Думаю, это поможет:
    http://xpoint.ru/know-how/WYSIWYG/TrueJavaScriptEditor
    http://xpoint.ru/know-how/JavaScript/YemulyatsiyaSelectionStart
     
    #229 astrologer, 28 Dec 2007
    Last edited: 28 Dec 2007
  10. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Такой вопрос:

    Есть некая форма. Так вот если при проверке данных, форма пуста, то нужно чтобы выскакивал алерт с надписью "Не введено сообщение" и при нажатии ОК юзера перебрасывало на определённый адрес..
    Вот кусок кода:

    Не хрена он не работает, как только не крутился с этим алертом =//
    помогите
     
    1 person likes this.
  11. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    echo вообще-то ближе к PHP, в Java-script есть document.write() ;)
     
  12. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Зачем алёрт в тэге ссылки?
    php:
    PHP:
    if(empty($mess))
    {
    echo
    '<script type="text/javascript">
    alert("Вы не ввели сообщение!");
    document.location.href = "http://ya.ru";
    </script>'
    ;
    }
    js:
    Code:
    <html>
    <head>
    
    <script type="text/javascript">
    
    function check_form(f)
    {
      if(f.elements[0].value == '')
      {
        alert('Вы не ввели сообщение');
        document.location.href = 'http://ya.ru';
        return false;
      }
      return true;
    }
    
    </script>
    
    
    </head>
    <body>
    <form onsubmit="return check_form(this);">
      <textarea></textarea>
      <input type="submit">
    </form>
    </body>
    </html>
    
     
    2 people like this.
  13. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    HTML:
    <script>
      function GetText()
      {
        if (!document.all && !document.all.item) 
    	  return "";
        var oSelTxt = document.selection.createRange();
    	return oSelTxt.text;
      }
    </script>
    
    <form name="forma">
    <textarea name="message">Some message</textarea><br>
    <input type="button" onclick="alert(GetText())" value="GO!">
    </form>
    Some text
    ;)
     
  14. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    У меня в Opera 9.24 и IE 7 все работает
     
  15. baroncrous

    baroncrous New Member

    Joined:
    6 Oct 2007
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Java Script подтверждение

    При нажатии на ссылку выводится сообщение типа "Вы действительно хотите перейти по ссылке котороя и покинуть зону ......... Да Нет " Как с помощью Java Script сделать автоматическое нажатие ДА
     
  16. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    =\ достаточно просто убрать if(confirm(...)) если ты об этом... или ты говоришь про mail.ru?
    Если про Mail.ru, то отправляй ссылку в виде <a href =http://forum.antichat.ru/>...</a>
     
    #236 NOmeR1, 30 Dec 2007
    Last edited: 30 Dec 2007
  17. eXp

    eXp Member

    Joined:
    6 Nov 2007
    Messages:
    13
    Likes Received:
    6
    Reputations:
    4
    Вопрос:
    как сделать плавное появление объекта (картинки например)?
    пробовал так:
    Code:
    document.getElementById("img").style.opacity = 0.5;
    но в IE это не работает =\
    и главное, как сделать чтобы появлялось плавно?
    Code:
    opacity(90);
    function opacity(x) {
    	document.getElementById("img").style.opacity = x/100;
    	x -= 1;
    	if (x>0) setTimeout('opacity('+x+');',50);
    }
    такой код работает, т.е. картинка исчезает плавно, но происходит это из-за того, что комп сильно нагружается и повлиять на скорость процесса нельзя. В общем, баян этот метод... как это делают нормальные люди? =)
     
  18. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    1) Первый параметр setTimeout() - должен быть функцией, а не строкой (!).
    2) Шаг можно и увеличить - будет, скажем, x -= 5;
    3) Не стоит каждый раз вызывать функцию getElementById() - можно сохранить результат (т.е. ссылку на объект) в переменной.
    4) Ещё есть setInterval()
     
  19. eXp

    eXp Member

    Joined:
    6 Nov 2007
    Messages:
    13
    Likes Received:
    6
    Reputations:
    4
    а как это? так чтоли:
    Code:
    setTimeout(opacity(x),50);
    по-моему так не правильно...
    я так делал... только картинка появляется скачками и скорость изменить нельзя =\
    можно пример кода?
    тож не помогло =\
     
  20. Stalk

    Stalk Elder - Старейшина

    Joined:
    8 Dec 2007
    Messages:
    23
    Likes Received:
    3
    Reputations:
    0
    Code:
    <script type="text/javascript">
       while ((Math.floor(8*Math.random())+1) > 3) 
       { var snowval="snow1.gif"; };
      while ((Math.floor(8*Math.random())+1) <= 6 )
        { var snowval="snow2.gif"; };   
      while ((Math.floor(8*Math.random())+1) <= 6 )
        { var snowval="snow3.gif"; };   
      var numof=Math.floor(10*Math.random()+5);
    
    
      //Configure below to change URL path to the snow image
      var snowsrc = snowval;
      // Configure below to change number of snow to render
      var no = numof;
      // Configure whether snow should disappear after x seconds (0=never):
      var hidesnowtime = 0;
      // Configure how much snow should drop down before fading ("windowheight" or "pageheight")
      var snowdistance = "windowheight";
    
      var ie4up = (document.all) ? 1 : 0;
      var ns6up = (document.getElementById&&!document.all) ? 1 : 0;
    
        function iecompattest(){
        return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
        }
    
      var dx, xp, yp;    // coordinate and position variables
      var am, stx, sty;  // amplitude and step variables
      var i, doc_width = 800, doc_height = 600;
      
      if (ns6up) {
        doc_width = self.innerWidth;
        doc_height = self.innerHeight;
      } else if (ie4up) {
        doc_width = iecompattest().clientWidth;
        doc_height = iecompattest().clientHeight;
      }
    
      dx = new Array();
      xp = new Array();
      yp = new Array();
      am = new Array();
      stx = new Array();
      sty = new Array();
      snowsrc=(snowsrc.indexOf("dynamicdrive.com")!=-1)? "snow.gif" : snowsrc
      for (i = 0; i < no; ++ i) {  
        dx[i] = 0;                        // set coordinate variables
        xp[i] = Math.random()*(doc_width-50);  // set position variables
        yp[i] = Math.random()*doc_height;
        am[i] = Math.random()*20;         // set amplitude variables
        stx[i] = 0.02 + Math.random()/10; // set step variables
        sty[i] = 0.7 + Math.random();     // set step variables
            if (ie4up||ns6up) {
          if (i == 0) {
            document.write("<div id=\"dot"+ i +"\" style=\"POSITION: absolute; Z-INDEX: "+ i +"; VISIBILITY: visible; TOP: 15px; LEFT: 15px;\"><a href=\"http://dynamicdrive.com\"><img src='"+snowsrc+"' border=\"0\"><\/a><\/div>");
          } else {
            document.write("<div id=\"dot"+ i +"\" style=\"POSITION: absolute; Z-INDEX: "+ i +"; VISIBILITY: visible; TOP: 15px; LEFT: 15px;\"><img src='"+snowsrc+"' border=\"0\"><\/div>");
          }
        }
      }
    
      function snowIE_NS6() {  // IE and NS6 main animation function
        doc_width = ns6up?window.innerWidth-10 : iecompattest().clientWidth-10;
            doc_height=(window.innerHeight && snowdistance=="windowheight")? window.innerHeight : (ie4up && snowdistance=="windowheight")?  iecompattest().clientHeight : (ie4up && !window.opera && snowdistance=="pageheight")? iecompattest().scrollHeight : iecompattest().offsetHeight;
        for (i = 0; i < no; ++ i) {  // iterate for every dot
          yp[i] += sty[i];
          if (yp[i] > doc_height-50) {
            xp[i] = Math.random()*(doc_width-am[i]-30);
            yp[i] = 0;
            stx[i] = 0.02 + Math.random()/10;
            sty[i] = 0.7 + Math.random();
          }
          dx[i] += stx[i];
          document.getElementById("dot"+i).style.top=yp[i]+"px";
          document.getElementById("dot"+i).style.left=xp[i] + am[i]*Math.sin(dx[i])+"px";  
        }
        snowtimer=setTimeout("snowIE_NS6()", 10);
      }
    
        function hidesnow(){
            if (window.snowtimer) clearTimeout(snowtimer)
            for (i=0; i<no; i++) document.getElementById("dot"+i).style.visibility="hidden"
        }
            
    
    if (ie4up||ns6up){
        snowIE_NS6();
            if (hidesnowtime>0)
            setTimeout("hidesnow()", hidesnowtime*1000)
            }
    
    </script>
    Ето скрипт снежка, который летает по сайту, скрипт дето спер, добавил рандомайзер количества снежынок и вида, но как тут сделать шоп снежынки шли в перемешку 3 типа а не 1 случано
     
Thread Status:
Not open for further replies.