Добрый день. Третий день бьюсь над этой задачей. Есть скрипт arcticalmodal(выводит модальные окна, очень нравится). Перейду собственно к проблеме. Вызываю модальное окно, там для примера взял текстовое поле. Нужно сделать что бы туда можно было вписать не более трех цифр, именно только цифры. То бишь ограничение я сделал, прописал maxlength, далее сделал регулярное выражение к этому текстовому полю. И он не как не реагирует, вообще. То есть если запустить без модального окна, то все гуд работает. не придерешься, с модальным окном не работает вообще. Подскажите пожалуйста, как решить данную проблему.
Подумать, поизучать код. А если нужна помощь, то показать, где и что не работает. Весь код (html и js) модального окна хотя бы.
Код (Text): <?php function main() { global $main; main::add2script("includes/javascript/jquery/jquery.arcticmodal-0.3.min.js"); main::add2link("includes/javascript/jquery/jquery.arcticmodal-0.3.css"); main::add2link("includes/javascript/jquery/themes/dark.css"); ?> <script> $(function() { $('#quantity').bind("change keyup input click", function() { if (this.value.match(/[^0-9]/g)) { this.value = this.value.replace(/[^0-9]/g, ''); } }); }); $(function() { $("#click").click(function () { $.arcticmodal({ type: 'ajax', url: 'index.php?module=test4&do=test', ajax: { type: 'POST', cache: false, dataType: 'html', success: function(data, el, responce) { var h = $('<div class="box-modal">' + '<div class="box-modal_close arcticmodal-close">X</div>' + responce + '</div>'); //$('B', h).html(responce.title); //$('P:last', h).html(responce.text); data.body.html(h); } } }); }); }); </script> <?php echo "<div id='click'>Click</div><br />"; echo "<input type='text' maxlength='3' name='quantity' id='quantity'/> <span id='errmsg'>Нет информации</span>"; } function test () { global $main; echo "<input type='text' maxlength='3' name='quantity' id='quantity'/> <span id='errmsg'>Нет информации</span>"; //echo "Hello world"; ?> <script> $(function() { $('#quantity').bind("change keyup input click", function() { if (this.value.match(/[^0-9]/g)) { this.value = this.value.replace(/[^0-9]/g, ''); } }); }); </script> <?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); //echo json_encode($arr); } if(isset($_GET['do'])){ if($_GET['do']=='test'){ test(); } if($_GET['do']=='get'){ get_games(); } if($_GET['do']=='table'){ table(); } if($_GET['do']=='update_status'){ status_update(); } if($_GET['do']=='geo'){ geo(); } }else main(); ?>
Это не код модального окна, а фрагмент со страницы с тестами. Но и по этому фрагменту видно, что ты связываешь обработчики change, keyup, input, click раньше времени. Модальное окно ещё не загрузилось, браузер "знает" о существовании только одного элемента с id='quantity', который там через echo выводится. Нужно сначала вставить код модального окна в страницу (у тебя это data.body.html(h)), потом повесить обработчик. Притом id у элементов должны быть уникальными. Если нужно обрабатывать события нескольким элементам, то задай им один класс и вызывай bind так Код (Text): $('.класс').bind
я вас не совсем понял, я с jquery еще пока слабо знаком и не совсем понимаю. Исправьте пожалуйста мой код, как правильно нужно, что бы я уже в дальнейшем от него отталкивался.
Если делать будет нечего, может, вспомню, исправлю. Быстрей и полезней будет, если ты ознакомишься с jquery и разберёшься сам.
так везде работает норм, то есть я уже много где внедрил(для своих нынешних знаний) jquery, а вот тут ступор. Не пойму в чем проблема( и когда открываешь код страницы, он почему то разметку с модальным окном не показывает, так и должно быть?