2

我有一个由 AJAX 请求创建的表。每个 TD 内部都有一个文本框输入。这允许用户编辑内容。我想要一个“只读”模式,用户无法编辑内容(由用户自行决定)。为此,我希望用户能够按下一个按钮(单选按钮也可以),将每个文本框输入替换为

包含文本框的值作为其文本的标记。目前,我的代码将每个输入替换为文本“对象对象”。(也许我没有正确地将值转换为文本字符串??)任何让我知道出了什么问题的提示都会非常感激。谢谢!!

这是我当前的脚本:

<script type="text/javascript">
    $("#permissionsbutton").live('click',function(){
        sss = $('.cells').each(function(){$(this).val()});
        $(".cells").replaceWith("<p class='readonlycells' type='text'>" + sss + "</p>");
    });
    // if this worked, I would write another few lines
    // to be able to switch back to having inputs
</script>

这是 HTML 的一个片段:

<div id="readwrite" class="settings">
    <h3>Permissions</h3>
    <button id="permissionsbutton">Switch to Read Only Mode</button>
</div>
<table><tr>
    <td><input class='cells' type=text value='Steve'></td>
    <td><input class='cells' type=text value='Mary'></td>
    <td><input class='cells' type=text value='Big Bird'></td>
</tr></table>
4

3 回答 3

3

jQuery 的each函数返回调用它的 jQuery 对象($('cells')在您的情况下)。因此,您当前的代码正在将.cells选择器匹配的每个元素替换为 jQuery 对象,该对象正在序列化为“对象对象”。

你想要的是更像

$("#permissionsbutton").live('click', function() {
    $(".cells").each(function() {
        $(this).replaceWith($(this).val());
    }
});
于 2010-12-03T00:42:08.253 回答
1
$("#permissionsbutton").live('click',function(){ 
  $('.cells').each(function(){
    var cell=$(this);
    cell.replaceWith('<span class="cells_ro">'+cell.val()+'</span>');
  }); 
});

或者只是禁用单元格:

$("#permissionsbutton").live('click',function(){ 
  $('.cells').attr('disabled',true);
});
于 2010-12-03T00:39:57.707 回答
0

怎么样:

$("#permissionsbutton").click(function(){
$('.cells').attr('disabled','disabled');
});

在这里试试

于 2010-12-03T00:44:36.303 回答