0

我需要通过在外部 JS 文件中放置 javascript 代码来制作“只读”文本字段。我无法直接修改 html,因为该页面位于远程服务器上。但是我可以通过在位于我自己主机上的外部 JS 中添加代码来进行交互。

html是这样的:

<form id="newunitform" class="left" action="page.php" style="width:600px" method="post">
<fieldset>
<ul>
<li>
<label for="add">
<input type="text" value="" name="add">
<input type="hidden" value="" name="remove">
<input type="hidden" value="105" name="resource_id">
<input type="hidden" value="" name="editid">
</li>
</ul>
<label for="submit"> </label>
<input class="button" type="submit" value="Add name" name="submit">
</fieldset>
</form>

我尝试了几种这样的组合:

document.getElementByName('add').readOnly=true;

或这个:

var add = document.getElementByName('add');
add.readOnly = true;

或这个:

document.getElementById('newunitform');
document.getElementByName('add').readOnly=true;

但没有一个工作。

4

4 回答 4

0

没错——它可以是 getElementById(单个元素)或 getElementsByName,它可以访问 DOM 中具有您要查找的名称的所有元素。

将 Element 更改为 Elements 后,您应该能够设置 readOnly 属性。

你也可以试试 document.getElementByNames('someElement').disabled = true; 但是如果有多个同名的元素要小心。

另外——因为像这样的语法已经让我绊倒了很多次,如果一个函数没有按预期工作,我会通过提醒元素的某些方面来确保我得到了我认为我得到的对象.

例如 alert(document.getElementsByName('someElement').length) 或 alert(document.getElementsByName('someElement').name)

祝你好运

于 2013-05-09T20:05:10.040 回答
0
document.getElementsByName('name')

返回一个数组。您需要使用方括号或 .item() 来指向您的元素。我建议你使用这个,在我看来这是一个更好的解决方案:

var newUnitForm = document.getElementById('newunitform');
newUnitForm.add.readOnly = true; //or newUnitForm['add'], it's the same
于 2013-05-09T19:53:20.177 回答
0

正如 Rocket Hazmat 在对您的问题的评论中建议的那样,您应该使用

document.getElementsByName('add')[0].readOnly=true;
于 2013-05-09T19:52:19.610 回答
0

如果您知道只有一个名为“add”的元素,您可以尝试以下操作:

var elem = document.getElementsByName("add")[0];
elem.setAttribute("readonly", "true");   // or elem.readOnly = true;

如果您知道“newunitform”表单中只有一个名为“add”的元素,请使用 LightStyle 的建议:

var elem = document.getElementById("newunitform").add;
elem.setAttribute("readonly", "true");   // or elem.readOnly = true;

在任何情况下,请确保在渲染相关元素之后onload执行代码段(例如,您可以将其放在 body 的方法中。

于 2013-05-09T19:55:14.150 回答