2013-03-08 6 views
0

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

<input type="submit" value="Update" name="Mod0EditRecord" id="Mod0EditRecord"> 
<input type="submit" value="Update" name="Mod0EditRecord" id="Mod0EditRecord"> 
<input type="submit" value="Update" name="Mod0EditRecord" id="Mod0EditRecord"> 

Я могу успешно установить атрибут первой кнопки для инвалидов следующим

if (login == 'demo.account') 
{ 
document.getElementById('Mod0EditRecord').setAttribute("disabled","disabled"); 
document.write("<br><p style=\"text-align:left; padding-left:100px; font-size:10px;\">** Update button is disabled for the demo **</p>"); 
} 
else 
{ 
document.getElementById('Mod0EditRecord').removeAttribute("disabled"); 
} 

Я ищу рекомендации о том, как установить атрибут для двух других.

Заранее спасибо

ответ

0

Вы можете использовать библиотеку JavaScript манипуляции дома как jQuery пересекать HTML узлы и добавлять классы/изменить идентификаторы, как вам нравится.

Если вы должны придерживаться этих атрибутов, в частности, то вы могли бы сделать что-то вроде этого в JQuery:

$('input[name="Mod0EditRecord"]').eq(0).attr('disabled','disabled') 
//this is the first input, change .eq(index) to the value you need 
+0

Спасибо Тони! Это работает как шарм. – Maverick

0

Возвращаемое значение document.getElementById должно быть массивом. И вы можете пройти через них.

var elem = document.getElementById('Mod0EditRecord'); 
    for(var i = 0; i < elem.length; i++) 
    { 
     elem[i].setAttribute("disabled","disabled"); 
    } 

Или, если вы используете JQuery, вы можете использовать .next() метод для получения двух других элементов.

+1

Спасибо devBinnooh за ваш ответ. К сожалению, я не думаю, что ваше предложение будет работать, потому что getElementById возвращает только первый соответствующий элемент - это была моя оригинальная проблема. Если кнопка была указана через «класс» вместо «id», тогда можно было бы использовать getElementsByName («Mod0EditRecord») и получить массив, как вы предложили. – Maverick

0

Вы не можете использовать document.getElementById, так как это возвращает первый элемент с этим идентификатором. Я бы не пошел с jQuery, если вы используете VanillaJS, так как загрузка библиотеки только для этой функции довольно бесполезна.

Это то, что вы идете сделать: использовать document.getElementsByTagName, чтобы получить все input -типы, проверьте, если это от type submit и disable этого.

var inputs = document.getElementsByTagName('input'); 
for(var i = 0; i < inputs.length; i++) { 
    if(inputs[i].type === "submit") { 
     var submitbtn = inputs[i]; 
     submitbtn.setAttribute("disabled", "disabled"); 
    } 
} 

JSFiddle.

+0

Спасибо MarcoK. Я согласен, что это легкое решение. У меня уже был Jquery на моей веб-странице для других вещей. Поэтому я закончил с помощью решения Тони. Но если бы я этого не сделал, я бы предпочел ваш. – Maverick