更改后的可切换设置默认选择值

时间:2009-05-30 01:37:03

标签: jquery jeditable

我的应用允许用户使用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 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。这里给出的答案并非如此。

无论如何,我用一个非常简单明了的解决方案来解决它:

只是不要添加'selected'键和值。

每次打开选择框时,它都会自动显示单元格的值...

希望这有帮助。

答案 1 :(得分:1)

在我的情况下,我不得不削减价值。这是因为神秘的白色空间。

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

希望这有帮助!

答案 2 :(得分:0)

你的代码看起来很不像jQuery,但它可能有效。您是否有理由将Jeditable分别绑定到每个ID?您是否有理由在函数内调用document.ready?只需给span一个类并绑定一个类。

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

并且在document.ready内部绑定Jeditable到它(不是函数)。如果select的值与您单击的文本匹配,则默认情况下将选中该值。注意设计!=设计。做类似的事情:

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

或者你也可以从外部url加载select的内容返回和JSON数组。然后select的文本和值不需要匹配:

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

答案 3 :(得分:0)

我没有向php脚本提交值,但是当你用jeditable调用另一个javascript函数时,你必须从函数中返回要更新的值,所以:

$(".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);
}

答案 4 :(得分:0)

有两种方法可以预先选择当前选定的值。

如果它是纯客户端,您可以覆盖数据功能:

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