Okno dialogowe interfejsu jQuery zmienia tytuł po wywołaniu zwrotnym ładowania


111

Chcę zmienić tytuł w oknie dialogowym interfejsu użytkownika po przesłaniu formularza w tym oknie dialogowym interfejsu użytkownika. Więc w funkcji wywołania zwrotnego loadpowinienem zasugerować, ale próbowałem i szukałem w Google bez rezultatu.

Czy ktoś ma pomysł?

Odpowiedzi:


258

Korzystanie z metod dialogowych:

$('.selectorUsedToCreateTheDialog').dialog('option', 'title', 'My New title');

Lub bezpośrednio, chociaż hack:

$("span.ui-dialog-title").text('My New Title'); 

Na przyszłość możesz pominąć Google za pomocą jQuery. Interfejs API jQuery przez większość czasu odpowie na Twoje pytania. W tym przypadku strona Dialog API . Biblioteka główna: http://api.jquery.com


8
Uważaj, że "hacky" wersja powyżej zmieni tytuł WSZYSTKICH okien dialogowych na stronie (w przypadku, gdy utworzyłeś więcej niż jedno).
camainc

1
czy mogę przejść kilka opcji?
themhz

3
@themis w aktualnej wersji jest .option()metoda, która również pobiera obiekt, patrz options(options)tutaj: api.jqueryui.com/dialog/#method-option
Nick Craver

$ ("# dialog"). dialog ({autoOpen: false, show: {effect: "blind", duration: 1000}, hide: {effect: "explode", duration: 1000}, close: function () {; }, tytuł: "test"}). okno dialogowe ("otwórz");
WhiteWolfza,

Ponieważ moja odpowiedź wciąż cieszy się dużym zainteresowaniem, zamieszczę ją również tutaj .. stackoverflow.com/a/17745795/1315125
Igor L.

14

Znalazłem prostsze rozwiązanie:

$('#clickToCreate').live('click', function() {
     $('#yourDialogId')
         .dialog({
              title: "Set the title to Create"
         })
         .dialog('open'); 
});


$('#clickToEdit').live('click', function() {
     $('#yourDialogId')
         .dialog({
              title: "Set the title To Edit"
         })
         .dialog('open'); 
});

Mam nadzieję, że to pomoże!


3

Udoskonalenie niecodziennego pomysłu Nicka Cravera, aby umieścić niestandardowy kod HTML w tytule okna dialogowego jQuery:

var newtitle= '<b>HTML TITLE</b>';
$(".selectorUsedToCreateTheDialog").parent().find("span.ui-dialog-title").html(newtitle);

Wolę nie być hackerem, kiedy nie muszę, a jest już zatwierdzony przez jquery sposób ustawiania tytułów HTML: przesłanianie metody _title. Jest to już omówione w tej odpowiedzi SO: stackoverflow.com/questions/14488774/ ...
cincodenada

2

Próbowałem zaimplementować wynik Nicka, który jest:

$('.selectorUsedToCreateTheDialog').dialog('option', 'title', 'My New title');

Ale to nie zadziałało, ponieważ miałem wiele okien dialogowych na jednej stronie. W takiej sytuacji poprawi tytuł tylko za pierwszym razem. Próba zszywania poleceń nie działa:

    $("#modal_popup").html(data);
    $("#modal_popup").dialog('option', 'title', 'My New Title');
    $("#modal_popup").dialog({ width: 950, height: 550);

Naprawiłem to, dodając tytuł do argumentów funkcji javascript każdego okna dialogowego na stronie:

function show_popup1() {
    $("#modal_popup").html(data);
    $("#modal_popup").dialog({ width: 950, height: 550, title: 'Popup Title of my First Dialog'});
}

function show_popup2() {
    $("#modal_popup").html(data);
    $("#modal_popup").dialog({ width: 950, height: 550, title: 'Popup Title of my Other Dialog'});
}

0

Nawet lepiej!

    jQuery( "#dialog" ).attr('title', 'Error');
    jQuery( "#dialog" ).text('You forgot to enter your first name');

Pierwsza linia nie zmieni tytułu okna dialogowego. Nie ma takiego atrybutu w oknie dialogowym interfejsu użytkownika jQuery. Drugi zmieni zawartość samego okna dialogowego, ale nie o to pytał użytkownik. I przypuszczam, że idokno dialogowe Yoru jest #dialog.
Pere
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.