在 jQuery 中,让输入框( 或 )不可输入主要有以下几种方法,取决于你的具体需求(是彻底禁用、只读、还是动态切换):

使用 prop() 方法(推荐)
这是 jQuery 1.6+ 版本后设置布尔属性(如 disabled, checked, readonly)的标准做法。

A. 完全禁用 (Disabled)
输入框变灰,无法输入,且不会随表单提交。
// 禁用单个输入框
(“#myInput”).prop(“disabled”, true);

// 启用单个输入框
(“#myInput”).prop(“disabled”, false);

// 禁用所有 class 为 .no-edit 的输入框
(“.no-edit”).prop(“disabled”, true);

B. 只读 (Readonly)
输入框内容可见,无法修改,但会随表单提交。光标通常可以聚焦,但无法打字。
// 设置为只读
(“#myInput”).prop(“readonly”, true);

// 取消只读
(“#myInput”).prop(“readonly”, false);

使用 attr() 方法(不推荐用于布尔属性)
虽然旧代码中常用 attr(‘disabled’, ‘disabled’),但在现代 jQuery 中,处理布尔状态应优先使用 prop()。attr() 操作的是 HTML 属性,而 prop() 操作的是 DOM 属性状态。

// 旧写法(依然有效,但不推荐)
(“#myInput”).attr(“disabled”, “disabled”);

// 移除属性以启用
(“#myInput”).removeAttr(“disabled”);

常见场景示例

场景一:点击按钮后禁用输入框

锁定输入
解锁输入

(document).ready(function() {
// 锁定
(“#lockBtn”).click(function() {
(“#username”).prop(“disabled”, true);
// 可选:添加样式让用户更明显知道被禁用
(“#username”).css(“background-color”, “#e9ecef”);
});

// 解锁
("#unlockBtn").click(function() {
    ("#username").prop("disabled", false);
    ("#username").css("background-color", ""); // 恢复背景色
});

});

场景二:根据条件动态控制
// 如果用户未登录,禁用评论框
var isLoggedIn = false;

if (!isLoggedIn) {
(“#commentBox”).prop(“disabled”, true);
(“#commentBox”).val(“请先登录后再评论”);
}

总结:disabled vs readonly
特性 disabled (禁用) readonly (只读)
能否输入 否 否

能否聚焦 (Tab键) 否 (跳过该元素) 是 (可以聚焦)

表单提交时是否发送值 否 (关键区别) 是

CSS 样式 浏览器默认变灰 通常保持原样 (可自定义)

jQuery 设置代码 .prop(“disabled”, true) .prop(“readonly”, true)

建议: 如果你希望数据不被提交且用户完全不能交互,用 disabled;如果你只是防止用户修改但需要提交该数据,用 readonly。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐