Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   scope - область видимости (https://javascript.ru/forum/css-html/66853-scope-oblast-vidimosti.html)

s24344 14.01.2017 14:06

scope - область видимости
 
Здравствуйте. Подскажите, пожалуйста, как мне добраться до переменной flag__name в глобальной области видимости.
<div class="val__form">
	<form action="" method="get" class="form1">
		<div class="val__input_w">
			<input class="val__i val__input val__input_name" type="text" value="" name="fname" />
		</div>

		<div class="val__input_w">
			<input class="val__i val__input val__input_email" type="text" value="" name="email" />
		</div>

		<div class="val__input_w">
			<input class="val__i val__input" type="text" value="8 (_ _ _) _ _ _-_ _-_ _" name="" />
		</div>

		<div class="val__input_w val__input_w-checkbox">
			<input class="val__i val__input_checkbox" type="checkbox" name="" />
			<span>Заказать обратный звонок</span>
		</div>

		<div class="val__arrow-submit"><input class="val__arrow-submit_img" type="image" src="images/arrow-submit.png" disabled="true" /></div>
	</form>
</div>


$(function() {
	(function() {
		var
			pattern__name = /\S/,
			pattern__email = /\b[a-z0-9._]+@[a-z0-9.-]+\.[a-z]{2,4}\b/i;

		var
			name = $('input.val__input_name'),
			email = $('input.val__input_email'),
			submit = $('input.val__arrow-submit_img');

		var flag__name = false;

		function validation() {

			name.on('blur', function() {
				if ( name.val() != '' ) {

					if ( name.val().search(pattern__name) == 0 ) {
				 		name.removeClass("error").addClass("ok");

				 		flag__name = true; // Меняю значение на true
					}
					else {
						name.addClass("error");
					}
				}
				else {
					name.addClass("error");
				}
			});
		}

		validation();

		if ( flag__name ) { // Здесь false
			alert("true");
		}
	})();
});

рони 14.01.2017 14:13

s24344,
в чём проблема?

s24344 14.01.2017 14:16

var flag__name определен в глобальной области видимости. По условию меняю значение переменной в локальной области видимости. Но это изменение внизу кода в глобальной области видимости не видно.

рони 14.01.2017 14:25

s24344,
я в полном тупике от вашей логики ... возможно вы хотели так ...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">


  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {

    var
      pattern__name = /\S/,
      pattern__email = /\b[a-z0-9._]+@[a-z0-9.-]+\.[a-z]{2,4}\b/i;

    var
      name = $('input.val__input_name'),
      email = $('input.val__input_email'),
      submit = $('input.val__arrow-submit_img');

    var flag__name = false;
    name.on('blur', validation);
    function validation() {

        if ( name.val() != '' ) {

          if ( name.val().search(pattern__name) == 0 ) {
         		name.removeClass("error").addClass("ok");

         		flag__name = true; // Меняю значение на true
          }
          else {
            name.addClass("error");
          }
        }
        else {
          name.addClass("error");
        }
        alert(flag__name);
    }

});

  </script>
</head>

<body>
<div class="val__form">
  <form action="" method="get" class="form1">
    <div class="val__input_w">
      <input class="val__i val__input val__input_name" type="text" value="" name="fname" />
    </div>

    <div class="val__input_w">
      <input class="val__i val__input val__input_email" type="text" value="" name="email" />
    </div>

    <div class="val__input_w">
      <input class="val__i val__input" type="text" value="8 (_ _ _) _ _ _-_ _-_ _" name="" />
    </div>

    <div class="val__input_w val__input_w-checkbox">
      <input class="val__i val__input_checkbox" type="checkbox" name="" />
      <span>Заказать обратный звонок</span>
    </div>

    <div class="val__arrow-submit"><input class="val__arrow-submit_img" type="image" src="images/arrow-submit.png" disabled="true" /></div>
  </form>
</div>


</body>
</html>

s24344 14.01.2017 14:30

Я хотел перевести flag__name в true и, например, в других (будущих) функциях также flag в true. А в конце кода в условии, если все flag true убрать на кнопке submit атрибут disabled.

рони 14.01.2017 14:59

s24344,
http://javascript.ru/forum/dom-windo...tml#post343069

s24344 14.01.2017 15:22

Спасибо


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