我需要通过在外部JS文件中放置javascript代码来使“readonly”成为一个文本字段。我无法直接修改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;
但没有工作。
答案 0 :(得分:0)
正如Rocket Hazmat在对你的问题的评论中建议的那样,你应该使用
document.getElementsByName('add')[0].readOnly=true;
答案 1 :(得分:0)
document.getElementsByName('name')
返回一个数组。您需要使用括号或.item()来指向您的元素。 我建议你使用这个,在我看来这是一个更好的解决方案:
var newUnitForm = document.getElementById('newunitform');
newUnitForm.add.readOnly = true; //or newUnitForm['add'], it's the same
答案 2 :(得分: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
方法中。
答案 3 :(得分:0)
这是真的 - 它是getElementById(单个元素)或getElementsByName,它访问DOM中具有您正在寻找的名称的所有元素。
将Element更改为Elements后,您应该能够设置readOnly属性。
您也可以尝试使用document.getElementByNames('someElement')。disabled = true;但如果有多个具有相同名称的元素,请小心。
另外 - 因为这样的语法已经绊倒了我很多次,如果一个函数没有按预期工作,我会确保我得到的对象我认为我通过警告某些方面得到了元素。
e.g。 alert(document.getElementsByName('someElement')。length)或alert(document.getElementsByName('someElement')。name)
祝你好运