За последние 24 часа нас посетили 17830 программистов и 1687 роботов. Сейчас ищут 878 программистов ...

Как в модальном окне сделать что либо с js

Тема в разделе "JavaScript и AJAX", создана пользователем ridvik, 9 фев 2014.

  1. ridvik

    ridvik Активный пользователь

    С нами с:
    7 июл 2012
    Сообщения:
    64
    Симпатии:
    0
    Добрый день. Третий день бьюсь над этой задачей. Есть скрипт arcticalmodal(выводит модальные окна, очень нравится). Перейду собственно к проблеме. Вызываю модальное окно, там для примера взял текстовое поле. Нужно сделать что бы туда можно было вписать не более трех цифр, именно только цифры. То бишь ограничение я сделал, прописал maxlength, далее сделал регулярное выражение к этому текстовому полю. И он не как не реагирует, вообще. То есть если запустить без модального окна, то все гуд работает. не придерешься, с модальным окном не работает вообще. Подскажите пожалуйста, как решить данную проблему.
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Подумать, поизучать код.
    А если нужна помощь, то показать, где и что не работает. Весь код (html и js) модального окна хотя бы.
     
  3. ridvik

    ridvik Активный пользователь

    С нами с:
    7 июл 2012
    Сообщения:
    64
    Симпатии:
    0
    Код (Text):
    1. <?php
    2. function main() {
    3. global $main;
    4.     main::add2script("includes/javascript/jquery/jquery.arcticmodal-0.3.min.js");
    5.     main::add2link("includes/javascript/jquery/jquery.arcticmodal-0.3.css");
    6.     main::add2link("includes/javascript/jquery/themes/dark.css");
    7. ?>
    8. <script>
    9. $(function() {
    10. $('#quantity').bind("change keyup input click", function() {
    11.     if (this.value.match(/[^0-9]/g)) {
    12.         this.value = this.value.replace(/[^0-9]/g, '');
    13.     }
    14. });
    15. });
    16. $(function() {
    17. $("#click").click(function () {
    18. $.arcticmodal({
    19.     type: 'ajax',
    20.     url: 'index.php?module=test4&do=test',
    21.     ajax: {
    22.         type: 'POST',
    23.         cache: false,
    24.         dataType: 'html',
    25.         success: function(data, el, responce) {
    26.             var h = $('<div class="box-modal">' +
    27.                     '<div class="box-modal_close arcticmodal-close">X</div>' +
    28.                     responce  +
    29.                     '</div>');
    30.             //$('B', h).html(responce.title);
    31.             //$('P:last', h).html(responce.text);
    32.             data.body.html(h);
    33.         }
    34.     }
    35. });
    36. });
    37. });
    38. </script>
    39. <?php
    40. echo "<div id='click'>Click</div><br />";
    41. echo "<input type='text' maxlength='3' name='quantity' id='quantity'/> <span id='errmsg'>Нет информации</span>";
    42. }
    43. function test () {
    44. global $main;
    45.     echo "<input type='text' maxlength='3' name='quantity' id='quantity'/> <span id='errmsg'>Нет информации</span>";
    46.     //echo "Hello world";
    47. ?>
    48. <script>
    49. $(function() {
    50. $('#quantity').bind("change keyup input click", function() {
    51.     if (this.value.match(/[^0-9]/g)) {
    52.         this.value = this.value.replace(/[^0-9]/g, '');
    53.     }
    54. });
    55. });
    56. </script>
    57. <?php
    58.     $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
    59.  
    60. //echo json_encode($arr);
    61. }
    62. if(isset($_GET['do'])){
    63.     if($_GET['do']=='test'){
    64.         test();
    65.     }
    66.     if($_GET['do']=='get'){
    67.         get_games();
    68.     }
    69.     if($_GET['do']=='table'){
    70.         table();
    71.     }
    72.     if($_GET['do']=='update_status'){
    73.         status_update();
    74.     }
    75.     if($_GET['do']=='geo'){
    76.         geo();
    77.     }
    78. }else main();
    79. ?>
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Это не код модального окна, а фрагмент со страницы с тестами.
    Но и по этому фрагменту видно, что ты связываешь обработчики change, keyup, input, click раньше времени. Модальное окно ещё не загрузилось, браузер "знает" о существовании только одного элемента с id='quantity', который там через echo выводится.
    Нужно сначала вставить код модального окна в страницу (у тебя это data.body.html(h)), потом повесить обработчик.

    Притом id у элементов должны быть уникальными. Если нужно обрабатывать события нескольким элементам, то задай им один класс и вызывай bind так
    Код (Text):
    1. $('.класс').bind
     
  5. ridvik

    ridvik Активный пользователь

    С нами с:
    7 июл 2012
    Сообщения:
    64
    Симпатии:
    0
    я вас не совсем понял, я с jquery еще пока слабо знаком и не совсем понимаю. Исправьте пожалуйста мой код, как правильно нужно, что бы я уже в дальнейшем от него отталкивался.
     
  6. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Если делать будет нечего, может, вспомню, исправлю. Быстрей и полезней будет, если ты ознакомишься с jquery и разберёшься сам.
     
  7. ridvik

    ridvik Активный пользователь

    С нами с:
    7 июл 2012
    Сообщения:
    64
    Симпатии:
    0
    так везде работает норм, то есть я уже много где внедрил(для своих нынешних знаний) jquery, а вот тут ступор. Не пойму в чем проблема( и когда открываешь код страницы, он почему то разметку с модальным окном не показывает, так и должно быть?