Как заменить оповещение javascript (которое появляется там, где его вызвало событие) на диалоговое окно jquery?

#javascript #jquery #html #css

#javascript #jquery #HTML #css

Вопрос:

Ребята, я собираюсь немного прояснить это. Когда я смотрю на этот материал jQuery UI, я совершенно запутываюсь в том, что мне нужно загрузить и куда поместить файлы.

Что я только что успешно сделал, так это ссылку на веб-сайт jQuery, чтобы мне не пришлось ничего загружать, и увидел, что диалоговое окно работает.

Однако диалоговое окно из показанного мне примера связано с div. Этот div мне не поможет, если он находится в верхней части экрана, а поле ввода — внизу. У меня есть только одна функция в заголовке, которая вызывается из нескольких текстовых полей. Эта функция включает в себя оповещение javascript () с сообщением.

ПОЖАЛУЙСТА, скажите мне ТОЧНЫЙ код, который мне нужно ввести в функцию (мы будем называть его myFunction() ), которая будет выводить сообщение везде, где вызывается myFunction..

Если бы это был javascript, в разделе head в скрипте мы бы имели:

 <script type="text/javascript">

function digitsOnly(){
alert("Digits only, please");
}

</script>
  

и в ряде текстовых полей мы бы имели:

 <input type="test/javascript" onkeydown="digitsOnly()" />
  

Мне нужно красивое всплывающее окно, чтобы заменить оповещение javascript ();
Мне не нужно, чтобы это делало что-либо, кроме всплывающего сообщения рядом с вызывающим текстовым полем. Если его можно перетаскивать и изменять размер, это было бы круто. Но пока я буду доволен тем, что я упомянул..

Я постоянно изучаю языки. Я знаю, что в конечном итоге тоже изучу jQuery. Но мне нужно, чтобы это было сделано сегодня вечером, если это возможно.

Джеймс

Комментарии:

1. Проблема немного неясна. Можете ли вы поделиться каким-либо кодом, который демонстрирует проблему?

2. конечно. Все очень просто, у меня что-то вроде этого: <input type=»text» onclick=»myFunction()» /> теперь скрипт: <script type=»text/javascript»> function myFunction(){ alert(«Yo, G Dog»); </script> I’m doing a couple of things with the function. Но это не имеет значения. Мое окно оповещения фактически сообщает клиенту вводить только цифры, и оно связано с onkeydown. Но я прошу заменить это оповещение () чем-то красивым. Мне нужно, чтобы оно вызывалось onkeydown. И мне нужно, чтобы оно появлялось, конечно, там, где находится текстовое поле… точно так же, как это было бы в окне оповещения javascript..

3. я просто перепутал jQuery с dialog(). Это путь вперед 🙂

4. @JamesKhouriDevJunkie: alert() поля JavaScript не удобно всплывают «там, где они вызываются» … возможно, это просто кажется вам таким образом в вашем текущем проекте? Как правило, они появляются в центре экрана. В любом случае, похоже, что вам нужна конкретная проверка, поэтому вы можете захотеть проверить jquery.bassistance.de/validate/demo .

5. Каждый раз, когда я вызываю оповещение javascript() внутри функции, содержащейся внутри скрипта в head, а затем вызываю его с каким-либо событием, привязанным к элементу управления, при вызове оно появляется в поле зрения того, где оно вызывается. Это все, что мне нужно для этого нового оповещения..

Ответ №1:

 window.alert = function(message) {
    // put your dialog box launching code here.
}
  

Ответ №2:

Взгляните на диалоговое окно jQuery UI. Это также не заменит значение по умолчанию alert() , поэтому вам следует просмотреть свой код и заменить вызовы на alert(...) экземплярами диалога.

Комментарии:

1. Потрясающе. Я не знал о диалоге 🙂 Просто переписываю свои модальности 🙂 Приветствия ~

Ответ №3:

alert() Функция Javascript запускается раньше всего остального, поэтому сложно (если не невозможно) фактически заменить ее поведение по умолчанию. Однако вы можете легко создать свою собственную функцию. Вместо:

 $('.clickable').click(function() {
  alert("Clicked.");
});
  

Сделайте это:

 $('.clickable').click(function() {
  $('.dialog').dialog({ 
    // options...
  });
});
  

Вам придется просмотреть свой код и заменить каждое оповещение этим, однако это не должно быть слишком сложной задачей, особенно если вы используете что-то вроде Textmate, в котором есть функция «Поиск проекта».

Комментарии:

1. JavaScript alert() не запускается раньше всего остального. Однако это блокирует выполнение кода до тех пор, пока он не будет закрыт.

Ответ №4:

Ответ Тимоти был работоспособным. Смотрите мой комментарий позже для необходимого добавления. Я скопировал и вставил из ответа Тимоти Хоури с прикрепленным моим комментарием:

«Мне нужно, чтобы оно появлялось, конечно, там, где находится текстовое поле…точно так же, как это было бы в окне оповещения javascript. «

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

Ответ — «Да»… Да, jQuery расположит диалоговое окно по центру прямо на вашем текущем порту просмотра, как и окно оповещения.

Вам нужно загрузить и ссылаться на основную библиотеку jQuery, а также на последнюю библиотеку jQueryUI, А также на одну тему jQuery CSS.

Тогда это должно быть так просто, как:

 $("<p>Yo, G Dog<p>").dialog({ modal: true });
  

Итак, код Тимоти работал почти идеально. Мне пришлось немного повозиться, пока я не нашел причину, по которой открывались два диалоговых окна. Нет ответов от поиска в Google. Просто экспериментирование помогло мне увидеть, что каждый HTML-тег, вставленный в диалоговое окно, по какой-то причине открывал свой собственный диалог. Способ исправить это состоял в том, чтобы содержать все HTML-теги в div. Теперь даже не возникает пустой диалог.

Если вы не знаете, о чем я говорю, используйте свой собственный код и посмотрите, что произойдет. ЗАТЕМ поместите больше HTML-тегов в круглые скобки. Пример:

 ("<h3>Attention></h3><p>Yo, G Dog</p>").dialog({ modal: true });
  

Наконец, поместите h3 и p в div и посмотрите на отличные результаты:

 ("<div><h3>Attention></h3><p>Yo, G Dog</p></div>").dialog({ modal: true });
  

Этот последний фрагмент кода будет отображать только одно диалоговое окно. 🙂 Спасибо за ответ!

Джеймс

Комментарии:

1. 1) Не цитируйте полностью чей-либо ответ. Можно процитировать часть этого, чтобы помочь другим читателям сосредоточиться на том, что помогло вам, но цитирование всего этого сбивает с толку (каждый может просто прокрутить до него). 2) Причина, по которой ваш первый приведенный выше пример кода привел к тому, что jQuery запустил 2 диалоговых окна… это потому, что у вас было 2 корневых элемента. jQuery выполняет указанные вами команды для ВСЕХ соответствующих элементов… таким образом, $(«.blah»).hide(); скроет ВСЕ элементы с классом ‘blah’. и, следовательно, $(«<p>1</p><p>2</p>»).dialog(); покажет 2 диалоговых окна, потому что создаются и сопоставляются 2 элемента.

Ответ №5:

Попробуйте это:

 $.extend({ alert: function (message, title) {
  $("<div></div>").dialog( {
    buttons: { "Ok": function () { $(this).dialog("close"); } },
    close: function (event, ui) { $(this).remove(); },
    resizable: false,
    title: title,
    modal: true
  }).text(message);
}
});
  

Больше информации здесь;

Комментарии:

1. Старайтесь избегать вашего ответа в другом замке: когда ответ не является ответом

Ответ №6:

alert = function(a){ my_alert(a); }

Ответ №7:

Мне потребовалось прочитать вопрос около 100 раз, чтобы понять, что вы имели в виду под

«Мне нужно, чтобы оно появлялось, конечно, там, где находится текстовое поле…точно так же, как это было бы в окне оповещения javascript. «

Я думаю, вы имеете в виду, что если бы вы частично прокрутили страницу вниз, а затем вызвали alert , то оно было бы сосредоточено на вашем текущем View Port (материале, который вы видите на экране)… и что вы хотите, чтобы это новое приукрашенное диалоговое окно делало то же самое.

Ответ — «Да»… Да, jQuery расположит диалоговое окно по центру прямо в вашем текущем порту просмотра, как это было бы в alert окне.

Вам нужно загрузить и ссылаться на основную библиотеку jQuery, А также последнюю библиотеку jQueryUI, А также на одну тему jQuery CSS.

Тогда это должно быть так просто, как:

 $("<p>Yo, G Dog<p>").dialog({ modal: true });
  

Комментарии:

1. Я попробую. Спасибо, Тимми… Мой брат… от той же матери.. Извините: P

2. Тим, твой код был единственным, который работал. Но по какой-то причине я получаю два диалоговых окна, одно над другим, и это второе (скрытое за первым), которое содержит сообщение «Йоу, Джи Дог». Я могу видеть его только при закрытии верхнего диалогового окна. Есть предложения?