jQuery ui โต้ตอบเปลี่ยนชื่อเรื่องหลังจากโหลด - โทรกลับ


111

ฉันต้องการเปลี่ยนชื่อเรื่องจากกล่องโต้ตอบ UI หลังจากที่ฉันส่งแบบฟอร์มในกล่องโต้ตอบ UI นี้แล้ว ดังนั้นในฟังก์ชันเรียกกลับหลังจากที่loadฉันควรแนะนำ แต่ฉันได้ลองใช้งานแล้วโดยไม่มีผลลัพธ์

มีใครคิดบ้าง

คำตอบ:


258

ใช้วิธีการโต้ตอบ:

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

หรือโดยตรงแฮ็คแม้ว่า:

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

สำหรับการอ้างอิงในอนาคตคุณสามารถข้าม google ด้วย jQuery ได้ jQuery API จะตอบคำถามของคุณเกือบตลอดเวลา ในกรณีนี้ที่หน้าโต้ตอบ API สำหรับห้องสมุดหลัก: http://api.jquery.com


8
ระวังว่าเวอร์ชัน "แฮ็ก" ด้านบนจะเปลี่ยนชื่อของกล่องโต้ตอบทั้งหมดในเพจ (ในกรณีที่คุณสร้างมากกว่าหนึ่งรายการ)
camainc

1
ฉันสามารถผ่านหลายตัวเลือกได้หรือไม่?
themhz

3
@themis ในเวอร์ชันปัจจุบันมี.option()วิธีการที่ใช้วัตถุเช่นกันโปรดดูoptions(options)ที่นี่: api.jqueryui.com/dialog/#method-option
Nick

$ ("# โต้ตอบ"). โต้ตอบ ({autoOpen: false, แสดง: {effect: "blind", ระยะเวลา: 1000}, ซ่อน: {effect: "explode", ระยะเวลา: 1000}, ปิด: function () {; }, title: "test"}). โต้ตอบ ("open");
WhiteWolfza

เนื่องจากคำตอบของฉันยังคงได้รับความสนใจเป็นอย่างมากฉันจะโพสต์ไว้ที่นี่ .. stackoverflow.com/a/17745795/1315125
Igor L.

14

ฉันพบวิธีที่ง่ายกว่านี้แล้ว:

$('#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'); 
});

หวังว่าจะช่วยได้!


3

การปรับปรุงแนวคิดแฮ็กโดย Nick Craver เพื่อใส่ HTML ที่กำหนดเองในชื่อกล่องโต้ตอบ jquery:

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

ฉันไม่ต้องการแฮ็กเมื่อฉันไม่จำเป็นต้องทำและมีวิธีตั้งชื่อ HTML ที่รับรองโดย jquery อยู่แล้ว: การแทนที่เมธอด _title ได้กล่าวไว้ในคำตอบ SO นี้แล้ว: stackoverflow.com/questions/14488774/…
cincodenada

2

ฉันพยายามใช้ผลลัพธ์ของ Nick ซึ่งก็คือ:

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

แต่นั่นไม่ได้ผลสำหรับฉันเพราะฉันมีหลายกล่องโต้ตอบใน 1 หน้า ในสถานการณ์เช่นนี้จะตั้งชื่อให้ถูกต้องในครั้งแรกเท่านั้น การพยายามเย็บเล่มคำสั่งไม่ได้ผล:

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

ฉันแก้ไขสิ่งนี้โดยการเพิ่มหัวเรื่องให้กับอาร์กิวเมนต์ของฟังก์ชัน javascript ของแต่ละกล่องโต้ตอบในหน้า:

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

ดียิ่งขึ้น!

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

บรรทัดแรกจะไม่เปลี่ยนชื่อกล่องโต้ตอบ ไม่มีแอตทริบิวต์ดังกล่าวในกล่องโต้ตอบ jQuery UI อันที่สองจะเปลี่ยนเนื้อหาของกล่องโต้ตอบเอง แต่นั่นไม่ใช่สิ่งที่ผู้ใช้ถาม และที่เผื่อว่าidของ yoru #dialogโต้ตอบ
Pere
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.