2012-05-19 33 views
-2

任何人都可以建议我一个JavaScript函数来设置文本框只读按提交按钮。所以内容不能修改。将文本框设置为只读在提交

+5

只是对“不能修改”的声明...... _Anything_客户端澄清可以修改。精明的用户仍然可以启用文本框,在其中输入值,甚至可以手动将该值包含在POST中的服务器上。如果您的意图是使用JavaScript进行安全性,请重新评估您的方法。客户端表单操作是为了用户体验,安全性需要_server-side_ validation。 – David

回答

2

要禁用input你要设置其属性disabled。如果你可以使用jQuery事遂所愿,这将是你在找什么:

$('#idOfYourInput').attr('disabled', true); 

如果jQuery是不是一种选择,那么你将要使用的setAttribute功能。看看the MDN documentation for it。事情是这样的:

var d = document.getElementById('idOfYourInput'); 
d.setAttribute('disabled', 'true'); 

(这两个代码示例假设您确定您的inputid属性如果不是的话,这将需要改变jQuery的一个将是微不足道的变化。 ,你只需要更新你的选择器来识别目标属性,后面的代码示例需要使用一些其他的DOM导航/选择功能来找到你的input元素。)

你想包括这个您提交按钮的处理程序。然而,了解这只会影响页面的当前上下文。所以我假设你的提交按钮被用来通过AJAX执行提交,而不是实际POST整个页面,对吗?因为如果你在发布整个页面,那么当页面刷新时,你将会处于一个全新的页面上下文中。 (这意味着有一个按钮单击事件相关联的任何代码都没有运行过。)

+0

这种情况是我填写了一个表格,然后当它被提交时,我留下了它的表单,但禁用了输入字段,因此无法更改。因此用户可以继续查看他们提交的内容。 – user1403763

+0

@ user1403763:如果你渲染一个全新的页面,如果用户不应该编辑它们,为什么要将它作为表单元素呈现?表单元素用于编辑数据。如果用户只能看到数据,那么不用表单就可以显示给他们。如果这是用户体验的要求,您可以将它设计为与表单非常相似。但是把数据放在不可编辑的东西里,比如'span'标签。 – David

+0

猜我的解释是不正确的。我有一个财政年度表。有一定的文本字段供用户输入(即目标详细信息)。用户被给予登录。当用户登录时,他可以输入数据(不全部都是)。用户输入的任何细节都将保存在提交按钮上。当用户登录时,应该禁用已填充的文本框,以便用户可以继续在其他字段中输入详细信息。 – user1403763