我的应用允许用户使用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>
在页面上复制相同的标记,返回新变量。
答案 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);
}