2013-05-09 4 views
0

Мне нужно сделать «readonly» текстовое поле по месту javascript-кода внутри внешнего JS-файла. Я не могу изменять html напрямую, потому что страница находится на удаленном сервере .. но я могу взаимодействовать, добавляя код в внешний JS, который находится на моем собственном хосте.Сделать readonly используя getElementByName?

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; 

но нет работа.

+3

Это на самом деле 'getElementsByName'. Обратите внимание на ** 's' **. Он возвращает несколько элементов. Вам нужно выполнить цикл и установить свойство 'readOnly'. –

+0

Черт побери, я не заметил «с» ...однако я протестировал все предлагаемое решение, но никто не работает. – dotcom22

ответ

0

Как Rocket Hazmat предлагает в комментарии к вашему вопросу, вы должны использовать

document.getElementsByName('add')[0].readOnly=true; 
+0

проверено, но не работает. – dotcom22

0
document.getElementsByName('name') 

возвращает массив. Вам нужно использовать скобки или .item(), чтобы указать на ваш элемент. Я предлагаю вам с помощью этой, на мой взгляд, это лучшее решение:

var newUnitForm = document.getElementById('newunitform'); 
newUnitForm.add.readOnly = true; //or newUnitForm['add'], it's the same 
+0

Я тоже тестировал это, но не работает. – dotcom22

+0

http://jsfiddle.net/Cm5yk/ Просто посмотрите на это, как видите, это работает. Пожалуйста, объясните, пожалуйста, свою проблему, чтобы мы могли вам помочь. –

+0

Я тестировал ваш код, но не работаю. Даже если я видел эту работу хорошо на Jsfiddle ... Это странно, потому что я использую без проблем какой-либо другой код для применения «readonly» другого «поля» (но эти поля имеют ID, поэтому я всегда использовал document.getElementById). Может быть, мне запрещено использовать JS для конкретного случая ... Предполагаю, что я должен видеть с поставщиком удаленного программного обеспечения ... – dotcom22

0

Если вы знаете, что есть только один элемент с именем «добавить», вы можете попробовать что-то вроде этого:

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

Если вы знаете, что есть только один элемент с именем «добавить» внутри «newunitform» форме, используйте предложение Lightstyle в:

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

В любом случае, убедитесь, что фрагмент кода выполняется после данный элемент был визуализирован (например, вы можете поместить его в тело onload.

+0

Я не уверен, что этот элемент является единственным, кто назван «добавить», однако я попытался, и это не сработало ... – dotcom22

+0

Вы проверили, что элемент уже отображен? Добавьте 'alert (elem);' в конце и посмотрите, что произойдет. – gkalpak

0

Это правда - это либо getElementById (один элемент), либо getElementsByName, которые получают доступ ко всем элементам DOM, которые имеют имя, которое вы ищете.

Как только вы меняете элемент на элементы, вы должны установить атрибут readOnly.

Вы также можете попробовать, document.getElementByNames ('someElement'). Disabled = true; но будьте осторожны, если есть несколько элементов с тем же именем.

Кроме того - потому что синтаксис, подобный этому, сработал меня сколько угодно раз, если функция не работает должным образом, я буду уверен, что получаю объект, который, как я думаю, получаю, предупреждая некоторых аспект элемента.

например. Оповещение (document.getElementsByName ('someElement'). длина) или предупреждение (document.getElementsByName ('someElement'). название)

Успехов

Смежные вопросы