Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Замена значения атрибута (https://javascript.ru/forum/dom-window/67074-zamena-znacheniya-atributa.html)

kzn 27.01.2017 00:38

Замена значения атрибута
 
Доброго времени суток!
Прошу помочь новичку с вопросами, а именно:
Есть коды:
<div class= "form-group" ng-class="{error: myForm.type.$invalid}">
            <label> ОПФ </label>
            <div>
								<select class="form-control" onChange="Selected(this)" ng-model="agent.type" placeholder="Выберите ОПФ" name="type" required/>
									<option value="ИП">ИП</option>
									<option value="ЮЛ">ЮЛ</option>
								</select>
                <span ng-show="myForm.type.$dirty && myForm.type.$invalid" class="help-inline">Выберите ОПФ</span>
            </div>
        </div>

<div class= "form-group" id="innblock" ng-class="{error: myForm.inn.$invalid}">
            <label> ИНН </label>
            <div>
                <input name="inn" id="iinn" pattern="\d+" ng-model="agent.inn" type= "text" class= "form-control" maxlength="12" placeholder="ИНН" required/>
                <span ng-show="myForm.inn.$dirty && myForm.inn.$invalid" class="help-inline">Введите ИНН</span>
            </div>
        </div>

Как заменить значение атрибута, например maxlength чтобы было 10?
Пытался через функцию:
<script type="text/javascript">
      function Selected(a) {
				var label = a.value;
				if (label=="ИП") {
					document.getElementById("iinn").maxlength="12";
				} else {
					document.getElementById("iinn").maxlength="10";
				}
			}
    </script>

А вообще идея менять значения атрибутов, включать-выключать атрибуты(required disabled) в зависимости от условия выбора из select. Это возможно?
еще пробовал так:
<script type="text/javascript">
      function Selected(a) {
				var label = a.value;
				var ell = document.querySelector("div.form-group input[name=inn]");
				if (label=="ИП") {
					ell.maxlength="12";
				} else {
					ell.maxlength="10";
				}
			}
    </script>

и никак :( :help:
возможно поменять только disabled.
Кстати, disabled влияет на required? т.е. если тег disabled, атрибут required должен выключится или нет?
У меня не выключается...

laimas 27.01.2017 02:08

https://learn.javascript.ru/attribut...tom-properties

kzn 27.01.2017 20:52

Спасибо, посмотрел, но не помогло.

<div class= "form-group" id="kppblock" style='display: block;' ng-class="{error: myForm.kpp.$invalid}">
            <label> КПП </label>
            <div>
                <input name="kpp" id="kkpp" ng-model="agent.kpp" type= "num" min="0" max="999999999" class= "form-control" placeholder="КПП" required/>
                <span ng-show="myForm.kpp.$dirty && myForm.kpp.$invalid" class="help-inline">Введите КПП</span>
            </div>
        </div>


Пробовал как в документации, а именно в функции так:

kkpp.setAttribute(maxlength, 12);


и даже так:
<script type="text/javascript">
      function Selected(a) {
				var label = a.value;
				var el = document.querySelector("div.form-group input[name=kpp]");
				var ell = document.querySelector("div.form-group input[name=inn]");
				if (label=="ИП") {
					document.getElementById("kppblock").style.display='none';
					ell.setAttribute(maxlength, 12);
					el.disabled = true;
				} else {
					document.getElementById("kppblock").style.display='block';
					ell.setAttribute(maxlength, 10);
					el.disabled = false;
				}
			}

но не срабатывает maxlength. disabled и display срабатывают. Что не правильно?
script функции надо именно в body вставлять?

kzn 27.01.2017 20:57

elem.hasAttribute(name), elem я так понял это id?
получается можно менять атрибуты только у div?

рони 27.01.2017 21:02

Цитата:

Сообщение от kzn
ell.setAttribute(maxlength, 12);

кавычки где?

kzn 27.01.2017 21:18

Из документации:
Цитата:

Пример ниже устанавливает атрибуты и демонстрирует их особенности.
Цитата:

elem.setAttribute('Test', 123); // (2) атрибут Test установлен
Цитата:

Мы можем записать в атрибут любое значение, но оно будет превращено в строку. Объекты также будут автоматически преобразованы.
Но вставка кавычек не помогло, пробежал по всем вариантам:(

laimas 27.01.2017 21:26

Цитата:

Сообщение от kzn
elem.setAttribute('Test', 123); // (2) атрибут Test установлен

Это опровержение
Цитата:

Сообщение от рони
кавычки где?

:) ?

kzn 27.01.2017 21:29

Цитата:

Сообщение от laimas (Сообщение 442508)
Это опровержение :) ?

Не понял вопроса.
Кавычки вставил, не помогло

laimas 27.01.2017 21:32

Цитата:

Сообщение от kzn
Пробовал как в документации, а именно в функции так:
kkpp.setAttribute(maxlength, 12);

Цитата:

Сообщение от рони
кавычки где?

Цитата:

Сообщение от kzn
Из документации:
Цитата:
Пример ниже устанавливает атрибуты и демонстрирует их особенности.
Цитата:
elem.setAttribute('Test', 123); // (2) атрибут Test установлен

Это диалог или монолог? Похоже на опровержение.

рони 27.01.2017 21:39

kzn,
<div class= "form-group" id="innblock" ng-class="{error: myForm.inn.$invalid}">
            <label> ИНН </label>
            <div>
                <input name="inn" id="iinn" pattern="\d+" ng-model="agent.inn" type= "text" class= "form-control" maxlength="12" placeholder="ИНН" required/>
                <span ng-show="myForm.inn.$dirty && myForm.inn.$invalid" class="help-inline">Введите ИНН</span>
            </div>
        </div>

<script>
    var ell = document.querySelector("div.form-group input[name=inn]");
    ell.setAttribute("maxlength", "10");
</script>


Часовой пояс GMT +3, время: 23:16.