如何禁用Javascript表单中的字段

如何禁用Javascript表单中的字段,javascript,jquery,html,Javascript,Jquery,Html,在Javascript表单中禁用(灰显)字段的最佳方法是什么?我在表单及其字段上都尝试了disabled=“disabled”,但都不起作用,例如: <form:form id="testForm" method="post" disabled="disabled" action="${pageContext.request.contextPath}/testSave" commandName="testForm"> <tr> <td val

在Javascript表单中禁用(灰显)字段的最佳方法是什么?我在表单及其字段上都尝试了
disabled=“disabled”
,但都不起作用,例如:

<form:form id="testForm" method="post" disabled="disabled" action="${pageContext.request.contextPath}/testSave" commandName="testForm">
    <tr>
        <td valign="top" disabled="disabled">Name:&nbsp;</td>
        <td valign="top"><form:input disabled="disabled" path="fName"/></td>
    </tr>
</form:form>

姓名:

你知道我做错了什么吗?

你可以禁用
input
标签,但不能禁用
td


使用JQuery,您可以执行以下操作来禁用给定表单的所有表单字段:

$('#formId').find('input,select,textarea[,other elements]').prop('disabled', true);

这完全取决于你想做什么

禁用表单字段的“sure fire”方式是输入上“disabled”和“readonly”的组合。在这两者之间,您可以涵盖您想要的一切:

  • 灰显输入
  • 使输入不可编辑
  • 使输入不可聚焦
  • 防止输入与表单一起发送
由于某些浏览器不支持禁用的“灰显”部分,因此最好的方法是设置自定义CSS,以您希望的方式显示禁用(或只读)字段

要获得正确的解决方案,了解您希望对表单执行的操作,请查看以下两个属性之间的差异:


<> > >编辑:此外,如果数据不与表单一起发送,您可以考虑用文本替换禁用输入。比起有一个用户无法使用的输入字段,用户不会感到困惑。

听起来你可以使用一个参考网站来浏览HTML。我发现W3School是一个很好的起点,它有各种在线技术的教程和参考资料

专门为和


还有,它怎么不起作用?(它不是变灰了,或者用户仍然可以输入它,…)

参见下面的js示例;我希望我的看法符合你的愿望:


根据您的要求更改css

你不能
禁用
一个
元素。嗯……好吧,那我怎么才能在表单中“灰显”元素呢?@BradM我想OP只是在尝试他/她能找到的一切,你不能禁用'form'或'td'元素。
无效,在某些浏览器中无法工作。他说他希望在加载时将其禁用,这样在htmlGiven中使用它会更有意义。他包含了标签JavaScript和jQuery。我认为这种类型的答案是受欢迎的。这仍然是一个问题solution@Stockedout-这似乎不起作用。我已将其附加到下拉更改侦听器,但什么也没有发生:
$('testForm').find('input,select,textarea').prop('disabled',true)还有其他方法吗?它确实有效。。。看看这个。我看不到你的完整代码,所以我真的看不出还有什么地方可能出错。确实加载了JQuery?删除边框是使输入字段显示为textYeh的一种简单方法,它不会变灰-尽管如果我使用
,它似乎可以工作。它如何与标签一起工作?e、 我问题的“名字”部分?嗯。。不可能“禁用”标签,因为它只是文本。你是说你希望它也以灰色显示吗?如果是这样,您需要在包含标签的单元格上使用CSS类。然后,当您需要在活动/非活动之间切换时,通过更改CSS类来设置样式(即,创建两个CSS样式,一个用于活动标签,另一个用于非活动标签…jQuery有一个简单的方法)。不确定为什么有人否决了此选项,但这很有效-感谢您的帮助:)是否可以以相同的方式为下拉列表执行此操作?是的,这就是为什么在示例中添加了“select”样式!为什么将
禁用
添加到
td
?它不是
td
标记的有效属性。。。虽然它看起来很有效,但我不同意这个解决方案,因为它没有使用正确的HTML。这就是你如何处理这种情况的概念。但是,我们可以编写“controldisable”,而不是disable。不是吗?现在,我们中的许多人在html标签上使用data-*属性,这些属性也可以在这个解决方案中使用,只需稍加修改。