
字节笔记本
2026年10月7日 · 约 2 分钟读完
按钮要等提示词后面有内容
按钮是 :disabled="!actualInput || isGenerating"。灰色类也看 !actualInput || isGenerating。actualInput 在输入回调里赋值。回调取 event.detail.value,没有则取 event.target.value。
去掉提示词之后可能什么都不剩
若整段以 prompt.content 开头,实际输入是这段去掉提示词再 trim。框里预先放了提示词、用户还没往下写时,切片是空字符串。!actualInput 为真,按钮禁用。看起来框里有字,可点的条件看的不是框里的全文,而是提示词后面的那一截。
不以提示词开头时,原逻辑把实际输入设成整段,并把输入内容改成提示词、换行、再加整段。这样实际输入非空,按钮会亮。用户点不了,说明走的是第一种:文本被认成以提示词开头,后面是空的。正在生成时即使用户已经写了字,同样禁用。生成状态若没有在结束时改回假,按钮会一直灰。

修改后的分支:比提示词还短,就把输入重置成提示词加换行,实际输入设为空。其他情况仍用 slice(prompt.content.length)。文本若不是以提示词开头,按这个长度去切,切掉的是用户自己的开头几个字,剩下的才算实际输入。短于提示词时实际输入被写成空,按钮继续禁用。这三条都没有在「框里有用户的字」时直接采用全文。
禁用看的是切片不是原文
打印语句写了实际输入和是否可点。可点的式子是实际输入为真并且不在生成。提示词本身再长,也不算实际输入。要让按钮和框里的字一致,实际输入应该是用户新写的部分;只有提示词时保持禁用是按这个式子来的。若用户写的字没有接在提示词后面,startsWith 失败,修改版仍按提示词长度切片,新写的开头会被切掉,剩下的可能仍是空。

按钮灰着,是因为禁用条件读的是提示词之后的切片。切片为空就不可点。生成标志也要在这次请求结束时清掉,否则写了字仍然点不了。



