2014-01-14 3 views
0

Я использую вкладки пользовательского интерфейса jQuery, загружая внешнюю форму на вкладках. Форма устанавливается для отправки при нажатии на флажок в форме. Форма отправляется с использованием ajax. На что я ищу ответ, нужно обновить содержимое вкладки после отправки формы, но мне не повезло найти ответ.jQuery UI tabs обновить содержимое после отправки формы

$(function() { 
$("#tabs").tabs({ 
    cache: true, 
    beforeLoad: function(event, ui) {   
     ui.jqXHR.error(function() { 
      ui.panel.html("Can't load content. Please call support."); 
     }); 
     if(!($.data(ui.tab[0], "cache.tabs"))) { 
      return $(ui.panel).html("<div align='center'><img src='images/loader.gif'><p><strong>Loading...</strong></p></div>"); 
     } 
    } 
}); }); 

Вкладки генерируются с использованием PHP загрузки переменных из БД:

<div id="tabs"> 
     <ul> 
      <?php 
      $sql = mysql_query("SELECT username, name FROM members ORDER BY username") or die(mysql_error()); 
      while($row = mysql_fetch_array($sql)) { 
       echo "<li><a href='tasks.php?user=" . $row['username'] . "'>" . $row['name'] . "</a></li>\n"; 
      } 
      ?>    
     </ul>  
    </div> 

Форма находится в файле tasks.php и представить сценарий:

$(".checkbox").click(function(){ 
$.ajax({ 
    type: "POST", 
    url: "update-task.php", 
    data: $("#form1").serialize() 
}); }); 

Он работает идеально. При нажатии на флажки с классом «.checkbox» форма отправляется и база данных обновляется. Но я хотел бы, чтобы текст на вкладке имел другой цвет, и список прибегал к тому, чтобы отмеченные элементы перемещались снизу, когда форма была отправлена ​​(я планировал сделать это на сервере с помощью PHP). Для этого мне нужно, чтобы содержимое на вкладке обновлялось, но я не знаю, как это сделать. Лучшая догадка добавить это в форме АЯКС представить:

success: function() { 
    // Something that refreshes tab content 
} 

Но я понятия не имею, что делать. Есть идеи?

/Carl

ответ

3

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

success: function() { 
    var tabId = $("#tabs").tabs("option", "active"); 
    $("#tabs").tabs("option", "active", tabId); 
} 
+0

Не работает. Ничто не обновляется. Вероятно, потому что содержимое вкладки связано с внешним файлом. – carlroger

+1

Хорошо. Попробуйте заменить эту строку '$ (" # tabs "). Tabs (" option "," active ", tabId);' с этой вкладкой '$ (" # tabs "). Tabs (" load ", tabId);' – Dmit3Y

+0

Да сэр! Это сделал трюк. Большое спасибо!! – carlroger

0

Невозможно использовать метод обновления?

$("#tabs").tabs("refresh"); 

http://api.jqueryui.com/tabs/#method-refresh

Тем не менее, я не знаю, почему вам нужно обновить, чтобы изменить цвет шрифта. Похоже, вы бы просто сделать это прямо в вашей функции успеха:

success: function() { 
    $('.my-selector').css('color', 'orange'); 
} 
+0

Я хватает некоторых объяснений. Я не хочу менять цвет отмеченных предметов и в то же время прибегать к порядку, чтобы отмеченные предметы были расположены внизу. Я занимаюсь этим сервером с помощью PHP. – carlroger

+0

И первое решение не помогает это? – isherwood

Смежные вопросы