vue3点击表格某个单元格文本就切换成输入框,其他单元格不变化

<el-table :data="data.tableData" height="60vh" border scrollbar-aways-on>
        <el-table-column label="序号" type="index" width="80" fixed />
        <el-table-column label="操作" width="120" fixed>
            <template #default="{ row }">
                <el-button type="danger" text @click="deleteBtn(row)" :disabled="row.status">删除</el-button>
                <el-button style="color: #3592FF" text @click="enableBtn(row)">{{ row.status ? '停用' : '启用' }}</el-button>
            </template>
        </el-table-column>
        <el-table-column prop="status" label="状态" width="120" />
        <el-table-column prop="phone" label="手机号" />
        <el-table-column prop="kanno" label="操作人" />
        <el-table-column prop="kanno" label="操作时间" />
        <el-table-column prop="kanno" label="创建人" />
        <el-table-column prop="createTime" label="创建时间" />
        <el-table-column label="姓名">
            <template #default="scope">
                <template v-if="scope.cellIndex == cellIndex && scope.$index == index">
                    <el-input v-model="scope.row.status" @blur="saveCell" />
                </template>
                <template v-else>
                    <div @click="editCell(scope, scope.$index)">{{ scope.row.status }}</div>
                </template>
            </template>
        </el-table-column>
    </el-table>
const cellIndex = ref('')
const index = ref('')

function editCell(row, ind) {
    cellIndex.value = row.cellIndex
    index.value = ind
}
function saveCell() {
    cellIndex.value = ''
    index.value = ''
}

效果如下

点击第一行的文本

点击第二行文本

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Vue 的指令 `v-if` 和 `v-show` 来实现表格点击变为输入框,和光标移动输入框变为文本框的功能。 首先,你需要在表格添加一个点击事件监听器,将其绑定到一个方法上。在这个方法,你可以使用 `v-if` 指令来切换表格单元格输入框的显示状态。当表格单元格点击时,将其隐藏并显示输入框;当输入框失去焦点时,将其隐藏并显示表格单元格。 接下来,你需要在输入框添加一个输入事件监听器,将其绑定到另一个方法上。在这个方法,你可以使用 `v-show` 指令来切换输入框文本框的显示状态。当用户在输入框开始输入时,将其隐藏并显示文本框;当用户在文本点击时,将其隐藏并显示输入框。 下面是一个简单的示例代码: ``` <template> <table> <tbody> <tr> <td v-if="!editing" @click="startEditing">{{ value }}</td> <td v-show="editing"><input type="text" v-model="inputValue" @blur="stopEditing" /></td> </tr> </tbody> </table> </template> <script> export default { data() { return { editing: false, value: '点击输入', inputValue: '', }; }, methods: { startEditing() { this.editing = true; }, stopEditing() { this.editing = false; this.value = this.inputValue; }, }, }; </script> ``` 在这个示例,我们首先定义了一个 `editing` 变量来表示当前单元格是处于编辑状态还是非编辑状态。在单元格点击时,我们将 `editing` 设置为 `true`,从而显示输入框。在输入框失去焦点时,我们将 `editing` 设置为 `false`,同时将输入框的值赋给 `value`,从而显示文本框。 注意,在这个示例,我们使用了 `v-model` 指令来实现响应式数据绑定。这样,当用户在输入框输入内容时,`inputValue` 的值会自动更新,而当我们将 `inputValue` 的值赋给 `value` 时,`value` 的值也会自动更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值