修改文本框为文本域时出现Uncaught TypeError错误求助
表单输入框转文本域报错解决办法
为啥报错?
你把原input输入框的所有属性一股脑复制给textarea了,但textarea的type属性是只读的——只能读取不能修改,可input自带type="text"这个属性,赋值的时候就触发报错了。
怎么改?
- 复制属性时跳过
type,textarea根本不需要这个属性 - 注意:input的内容存在
value属性里,textarea的内容是放在标签内部的,得把原input的内容同步过去
修改后的代码:
const [node] = $('input[name="train_description"]'); const attrs = {}; $.each(node.attributes, (index, attribute) => { // 排除type属性 if (attribute.name !== 'type') { attrs[attribute.name] = attribute.value; } }); // 创建textarea,复制属性+同步原输入框内容 const textarea = $('<textarea>').prop(attrs).val(node.value); // 替换原输入框 $(node).replaceWith(textarea);
补充提醒
原代码里的$(this)大概率指向不对,改成$(node)更稳妥,毕竟你拿到的原输入框节点是node。
内容的提问来源于stack exchange,提问作者mahoney
相关产品推荐
相关产品推荐

