手动输入后无法动态设置输入框文本值的jQuery技术问题
解决jQuery对话框输入框值不更新的问题
看起来你遇到的是输入框HTML属性与DOM属性不同步导致的典型问题,我来帮你拆解清楚:
问题根源
你现在用attr('value', $keepTitle)来设置输入框的值,这个方法修改的是输入框标签上的value HTML属性。但当用户手动在输入框中输入内容后,浏览器会优先更新输入框的DOM value property(这才是页面上实际显示的内容),而HTML属性不会同步跟着变化。所以当你再次打开对话框时,虽然代码更新了HTML的value属性,但输入框显示的是DOM property里保存的用户上次输入的内容,就会让你觉得第二行代码被忽略了。
修复方案
把设置值的代码从attr换成val()方法就行——它直接操作DOM的value property,能确保输入框显示最新的$keepTitle值:
$keepTitle = $('.nav-folder-text[pass="' + $to_edit_id + '"]').text(); // 用val()代替attr('value', ...) $('#folder-typed').val($keepTitle); new_f_dialo... // 你的对话框初始化/打开代码
额外优化(如果用jQuery UI Dialog)
如果你的new_f_dialo是jQuery UI的Dialog组件,建议把设置值的逻辑绑定到对话框的open事件上,这样每次打开对话框都会自动刷新输入框的值,避免后续维护时出现遗漏:
// 假设你的对话框初始化代码类似这样 $("#your-dialog-id").dialog({ open: function() { // 每次打开时重新获取最新的标题并设置 const $to_edit_id = // 这里获取当前要编辑的目标ID const keepTitle = $('.nav-folder-text[pass="' + $to_edit_id + '"]').text(); $('#folder-typed').val(keepTitle); }, // 其他对话框配置项 });
这样不管用户之前有没有修改过输入框内容,每次打开对话框都会自动加载最新的标题啦~
内容的提问来源于stack exchange,提问作者Jahusek
相关产品推荐
相关产品推荐

