改了一個小項目,裡面有一個小的問題他們是這樣提需求的。兩個輸入框,第一個輸入框裡面,輸入的內容會對第二個輸入框中的內容產生影響。具體是這樣的:如果第一個輸入框中的值不是“0”,那麼第二個輸入框就不能填寫任何的數據,只能預設“0”。只有當第一個輸入框中輸入0的時候,第二個輸入框才是可以輸入的。這個需求 ...
改了一個小項目,裡面有一個小的問題他們是這樣提需求的。兩個輸入框,第一個輸入框裡面,輸入的內容會對第二個輸入框中的內容產生影響。具體是這樣的:如果第一個輸入框中的值不是“0”,那麼第二個輸入框就不能填寫任何的數據,只能預設“0”。只有當第一個輸入框中輸入0的時候,第二個輸入框才是可以輸入的。這個需求同樣的很簡單。在自己測試的時候出現了一個小問題,就是當用戶刪除第一個輸入框的內容的時候,居然沒有走(input_val==“”)的這個判斷,而是走的(input_val==0)的這個判斷,當時有點懵逼啊。很是不理解。現在來整理一下,方便下次的時候使用。
其實當我們刪除輸入框的內容的時候,我們取到的值確實是"",但是這個時候js進行判斷時候,會出現一個隱形的轉換,就是0==“”是true,所以這個時候我們的條件就有錯了。因為我們是用的if else判斷的,而且我把這個判斷等於0卸載了最上面,所以就這個時候就出錯了。這裡給自己記錄一下,捎帶著我自己寫了一個測試的小demo,這裡直接附上代碼。直接粘貼到編輯器然後運行就可以了。
1 <html>
2
3 <head>
4 <title></title>
5 <meta charset="UTF-8" />
6 <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
7 </head>
8
9 <body>
10 <h1>input輸入框中的空和0的判斷</h1>
11 <input type="text" name="" id="input_one" value="" />
12 <p class="input_one_con"></p>
13 <p>判斷時候和0相等:<i class="eq_0"></i></p>
14 <p>判斷時候和null相等:<i class="eq_null"></i></p>
15 <p>判斷時候和“”相等:<i class="eq_"></i></p>
16 <h2>結論:如果是刪除了,沒有數值了,那麼和“”是相等的,但是和null是不相等的</h2>
17 </body>
18 <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
19 <script type="text/javascript">
20 $("#input_one").on("input",function(){
21 var input_val = $(this).val();
22 $(".input_one_con").text(input_val);
23 if(input_val==0){
24 $(".eq_0").text("true");
25 }else{
26 $(".eq_0").text("false");
27 }
28 if(input_val==null){
29 $(".eq_null").text("true");
30 }else{
31 $(".eq_null").text("false");
32 }
33 if(input_val==""){
34 $(".eq_").text("true");
35 }else{
36 $(".eq_").text("false");
37 }
38 })
39 console.log(null=="");
40 </script>
41
42 </html>