4

我的应用程序允许用户使用 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> 

在返回新变量的页面上复制相同的标签。

4

5 回答 5

3

我有同样的问题。这里给出的答案并不重要。

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

只是不要添加“选定”键和值。

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

希望这可以帮助。

于 2012-03-22T13:15:48.297 回答
1

就我而言,我不得不削减价值。这是因为神秘的空白。

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

希望这可以帮助!

于 2012-02-23T07:50:43.597 回答
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);
}
于 2011-03-22T00:03:11.107 回答
0

您的代码看起来非常不像 jQuery,但它可能有效。您是否有理由将 Jeditable 分别绑定到每个 id?还有你在函数中调用 document.ready 的原因吗?只需给跨度一个类并绑定到一个类。

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

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

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

或者,您也可以从返回的外部 url 和 JSON 数组中加载 select 的内容。那么select的text和value就不需要匹配了:

$(document).ready(function(){
    $('#tweekType-'+ID).editable("edit.php?type=tweekType", {  
       loadurl : "http://www.example.com/select.php",
       type    : 'select'
    });
});
于 2009-07-10T10:51:20.313 回答
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);
}
于 2009-11-25T19:58:39.073 回答