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"); } })(); }); |
s24344,
в чём проблема? |
var flag__name определен в глобальной области видимости. По условию меняю значение переменной в локальной области видимости. Но это изменение внизу кода в глобальной области видимости не видно.
|
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> |
Я хотел перевести flag__name в true и, например, в других (будущих) функциях также flag в true. А в конце кода в условии, если все flag true убрать на кнопке submit атрибут disabled.
|
|
Спасибо
|
Часовой пояс GMT +3, время: 10:20. |