2014-10-30 20 views
0

在一个MVC应用程序中,我只想在文本框中设置焦点,只要模型属性设置为true。下面是我使用jQuery代码:如果语句不工作时使用jQuery .focus()

<script type="text/javascript"> $(document).ready(function() { $(function() { var isPostBack = $("#IsPostBack").val(); if (isPostBack) { $('#MyElement').focus(); } }); }); </script>

IsPostBack是包含一个布尔值的隐藏字段。出于某种原因,这总是将重点放在MyElement上。好像IsPostBack总是如此。然而,奇怪的是,当我在Firebug中调试时,它似乎正常工作。这里发生了什么?

+0

'isPostBack'的值是什么?是空字符串还是'false' – 2014-10-30 02:57:43

+0

IsPostBack的值总是为真或假 – navig8tr 2014-10-30 02:58:37

回答

2

你的价值可能是字符串“假”,并"false" != false,所以尝试改变你isPostBack到,

var isPostBack = ($("#IsPostBack").val() == "true") ? true : false; 

更新::则可以将值转换为小写和比较,如:

$(document).ready(function() { 
    var isPostBackStr = $.trim($("#IsPostBack").val()); 
    isPostBackStr = isPostBackStr.toLowerCase(); 
    var isPostBack = (isPostBackStr == "true") ? true : false; 
    if (isPostBack) { 
     $('#MyElement').focus(); 
    } 
}); 
+0

我认为“真”需要大写。 – navig8tr 2014-10-30 03:06:50

+0

@ navig8tr它取决于你的值是TRUE还是真的 – 2014-10-30 03:09:37

+0

在它被设置为true的控制器中,但由于某种原因,它被设置为True。 – navig8tr 2014-10-30 03:10:58

2

问题是isPostBack具有字符串值'false'这始终是truthy

$(document).ready(function() { 
    $(function() { 
     var isPostBack = $("#IsPostBack").val(); 
     if (isPostBack == 'true') { 
      $('#MyElement').focus(); 
     } 
    }); 
}); 
+0

这似乎工作,但我不得不使大写'真实'。 – navig8tr 2014-10-30 03:07:16

+0

@ navig8tr yes ...取决于输入的实际值 – 2014-10-30 03:08:09