2016-03-27 3 views
0

У меня возникают проблемы с переменными в javascript и asp.net mvc project.Проблема с переменными javascript в asp.net mvc

Я создаю приложение, в котором пользователь имеет возможность отображать страницу в полноэкранном формате.

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

У меня возникли проблемы с javascript, который обрабатывает условие, если пользователь должен получить предупреждение или нет. Следующий код иллюстрирует проблему:

Javascript:

<script type="text/javascript"> 

    var $full = false; //initiates the full variable 

    $(document).ready(function() { 
     $("#TemplateID").change(function() { //when selected index of dropdown is changed 
      var selectedIndex = $("select option:selected").first().text(); //the selected index 
      $.get('@Url.Action("getIfFullscreen", "Messages")', //calls an ASP.net method to determine if selected index should be displayed as fullscreen 
       { id: selectedIndex }, function (data) { 
        $full = data; //sets the variable full to return value 
        Debug.writeln("onchange:" + $full) //displays as expected 
       }); 
     }); 
    }); 

    $(document).ready(function() { 
     $('[data-confirm]').click(function (e) { 
      Debug.writeln("onclick:" + $full); //displays as expected 
      if ($full == true){ //always takes the value from when the variable full was initiated 
       if (!confirm($(this).attr("data-confirm"))) { 
        e.preventDefault(); 
       } 
      } 
     }); 
    }); 
</script> 

HTML:

<div class="form-group"> 
        <div class="col-md-offset-2 col-md-10"> 
         <input type="submit" data-confirm="Are you sure?" value="Skicka" class="btn btn-default" /> 
        </div> 
       </div> 

Похоже переменной полной изменяется (в первой функции) от внешнего вида вывод debug, но оператор if всегда интерпретирует его, поскольку он был сначала инициирован.

Я совершенно новый для javascript, и любая помощь очень ценится.

+1

Что такое значения, которое вы видите в '$ full'? Вы устанавливаете его для boolean true или строки «true»? – Shyju

+0

Я устанавливаю его с логическим значением true/false из части asp.net. Я думаю, вы указали мне в правильном направлении. Я заменил полную переменную на использование целых чисел, и теперь она работает, когда я использую 0 и 1 вместо true и false. Большое спасибо! – karra

+0

Да. Я добавил ответ, объясняющий, почему это может быть неудачным. – Shyju

ответ

1

Если ваш код сервера возвращает логическое истинное значение, оно будет отображаться как True, а не true. В javascript True не является boolean true. Таким образом, переменная JS собираются быть переписаны со строковым значением "True"

Таким образом, вы можете изменить, если условие, чтобы проверить против строкового значения

if ($full === "True"){ } 
+1

Работает отлично! Большое спасибо! – karra

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