Jeditable настройка по умолчанию выбранное значение после изменения - PullRequest
4 голосов
/ 30 мая 2009

Мое приложение позволяет пользователю обновлять поле с помощью выпадающего списка, используя jeditable. Когда программа загружена, я создал эту функцию для получения выбранного значения и установки его в качестве выбранного значения в jeditable.

Но после того, как я изменил значение, выбранный тег остается установленным как старое значение. как я могу изменить его на новое значение?

это функция

function updateType(ID,type){
$(document).ready(function(){

    $('#tweekType-'+ID).editable("edit.php?type=tweekType", {  

    data   : " {'copywriting':'Copywriting','design':'Design','code':'Code', 'selected':'"+type+"'}",
    type   : 'select'

    });
});

это обертка вокруг тега.

<span id="tweekType-<?php echo $getTweaksReturned->tweekID; ?>">
<?php type($getTweaksReturned->type); ?>
<script>updateType('<?php echo $getTweaksReturned->tweekID; ?>','<? echo $getTweaksReturned->type; ?>'); </script>
</span> 

Тот же тег реплицируется на страницу, которая возвращает новую переменную.

Ответы [ 5 ]

3 голосов
/ 22 марта 2012

У меня была такая же проблема. Ответы, приведенные здесь, не имеют смысла.

В любом случае, я решил это довольно простым и аккуратным решением:

Только не добавляйте «выбранный» ключ и значение.

Каждый раз, когда вы открываете поле выбора, оно автоматически устанавливается на значение ячейки ...

Надеюсь, это поможет.

1 голос
/ 23 февраля 2012

В моем случае мне пришлось обрезать значение. Это из-за таинственных пробелов.

$('.edit').editable('/xxx/TableRowUpdate', {
...
data: function (value, settings) {
return " {'a':'category a','b':'category b','selected': '" + $.trim(value) + "'}";
},
...

Надеюсь, это поможет!

0 голосов
/ 25 ноября 2009

Я не отправлял значения в скрипт php, но когда вы вызываете другую функцию javascript с jeditable, вы должны вернуть значение, которое будет обновлено из функции, так:

$(".selector").editable(someFunction, {
    indicator: "Saving...",
    tooltip: "Click to edit...",
    data: " {'3':'3','4':'4','5':'5'}",
    type: 'select',
});

тогда:

function someFunction(value, settings) {
  // do some magic
  return(value);
}
0 голосов
/ 22 марта 2011

Есть два способа предварительно выбрать текущее выбранное значение.

Если это чисто клиентская часть, вы можете переопределить функцию данных:

 $('.edit').editable('/xxx/TableRowUpdate', {
   ...
   data: function (value, settings) {
     return " {'a':'category a','b':'category b','selected': '" + value + "'}";
   },
   ...

Если это серверная часть, вы можете использовать

$('.edit').editable('/xxx/TableRowUpdate', { 
     ...    
     loadurl: '/xxx/FileCategoryList',
     loadtype: "POST",
     loaddata: function(value, settings) {
                  return {selectedValue: value};
               },

Код на стороне сервера (пример c # MVC) будет выглядеть как

public JsonResult FileCategoryList(string selectedValue)
{
  var categories = new Dictionary<string, string>{{"a", "a category"}, {"b", "b category"}, {"selected", selectedValue}};
    return Json(categories, JsonRequestBehavior.DenyGet);
}
0 голосов
/ 10 июля 2009

Ваш код выглядит довольно не как jQuery, но, вероятно, работает. Есть ли причина, по которой вы привязываете Jeditable к каждому идентификатору отдельно? Также есть ли причина, по которой вы вызываете document.ready внутри функции? Просто дайте промежутку класс и свяжите его с классом.

<span class="tweek" id="tweekType-<?php echo $getTweaksReturned->tweekID; ?>">
<?php type($getTweaksReturned->type); ?>
</span>

и привязка Jeditable к нему внутри документа .ready (не функция). Если select имеет значение, совпадающее с текстом, который вы щелкнули, он будет выбран по умолчанию. Обратите внимание на дизайн! = Дизайн. Сделайте что-то вроде:

$(document).ready(function(){
    $('#tweekType-'+ID).editable("edit.php?type=tweekType", {  
       data   : " {'Copywriting':'Copywriting','Design':'Design','Code':'Code'}",
       type   : 'select'
    });
});

Или вы можете альтернативно загрузить содержимое select из внешнего URL-адреса, который возвращает массив JSON. Тогда текст и значение select не должны совпадать:

$(document).ready(function(){
    $('#tweekType-'+ID).editable("edit.php?type=tweekType", {  
       loadurl : "http://www.example.com/select.php",
       type    : 'select'
    });
});
...