2014-10-30 21 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