2015-11-01 78 views
0

我吮吸Jquery和Javascript。Jquery只是不想工作

我一直在努力使這項工作:

debugger; 

(function() { 
    $('form input').keyup(function() { 

     var url = [false, false, false, false, false]; 
     var plus = 0; 
     $('form input').each(function() { 
      plus = plus + 1; 
      if ($(this).val() == '') { 
       url[plus] = true; 
      } 
     }); 

     $("#demo").text(url); 
    }); 
})() 

但jQuery的甚至不會設置#demo文本可言,沒有什麼是任何發生。

HTML:

<div class="inner cover"> 
    <h1 class="cover-heading">Create.</h1> 

    <p class="lead"> 
     <form action="./index.php?p=create" method="post" class="form-horizontal" role="form"> 
      <div class="form-group"> 
       <input name="url" type="text" id="url" class="form-control" placeholder="URL"> 
      </div> 
      <div class="form-group"> 
       <input name="url2" type="text" id="url2" class="form-control" placeholder="URL"> 
      </div> 
      <div class="form-group"> 
       <input name="url3" type="text" id="url3" class="form-control" placeholder="URL"> 
      </div> 
      <div class="form-group"> 
       <input name="url4" type="text" id="url4" class="form-control" placeholder="URL"> 
      </div> 
      <div class="form-group"> 
       <input name="url5" type="text" id="url5" class="form-control" placeholder="URL"> 
      </div> 
      <div class="form-group"> 
       <button type="submit" name="submit_url" class="btn btn-lg btn-default">Go!</button> 
      </div> 
     </form> 
    </p> 
    <p id="demo"></p> 
</div> 

什麼是所有的事情我已經完全做好了所有錯了嗎?

提前(我一直在測試的jsfiddle本)

感謝。 -G

+0

請提供任何更多的信息,像瀏覽器的控制檯日誌 – Kalyan

+0

你嘗試在Chrome(或你喜歡的瀏覽器)調試,看看該功能,你在實際執行期待它?如果是,它的行爲如你所期望的那樣? –

+0

這是不是與jQuery的一個問題,你可以通過把$(「#演示」)文本(「球」)已經測試。在$(...)。keyup(function(){})之外; – Sayyid

回答

0
$('form > input') 

應該

$('form input') 

becase的>意味着 「direct child」,你有和input一個div之間form

+0

我試圖這樣: '(函數(){ $( '形式輸入')KEYUP(函數(){ 變種URL = [FALSE,FALSE,FALSE,FALSE,FALSE]; 變種加= 0; $('form> input')。each(function(){ plus = plus + 1; if($(this).val()==''){ url [plus] = true ; } }); 如果(空){ $( '#登記冊')ATTR( '禁用', '禁用'); }其他{ $( '#登記冊')removeAttr(」。禁用'); } $(「#demo」)。text(url); }); })()' 但它仍然沒有任何輸出 – Haxo201

+0

還有另一種形式'> input'內。請注意,我沒有看到函數內部的邏輯。 :-) –

+0

是的,對不起,我之前刪除了它,但它沒有影響,仍然沒有輸出。 – Haxo201

0

$('form > input')需要投入是 「形式」 的直接後裔。你的包裹在DIV中。正確的選擇是$('form input')

(function() { 
 
    $('form input').keyup(function() { 
 

 
    var url = [false, false, false, false, false]; 
 
    var plus = 0; 
 
    $('form > input').each(function() { 
 
     plus = plus + 1; 
 
     if ($(this).val() == '') { 
 
      url[plus] = true; 
 
     } 
 
    }); 
 

 
    $("#demo").text("yo"); 
 
    }); 
 
})()
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> 
 
<div class="inner cover"> 
 
     <h1 class="cover-heading">Create.</h1> 
 

 
    <p class="lead"> 
 
     <form action="./index.php?p=create" method="post" class="form-horizontal" role="form"> 
 
      <div class="form-group"> 
 
       <input name="url" type="text" id="url" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url2" type="text" id="url2" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url3" type="text" id="url3" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url4" type="text" id="url4" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url5" type="text" id="url5" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <button type="submit" name="submit_url" class="btn btn-lg btn-default">Go!</button> 
 
      </div> 
 
     </form> 
 
    </p> 
 
    <p id="demo"></p> 
 
</div>

AS PER REQUEST IN COMMENT:再次,選擇器不是 「形式>輸入」 時, 「表單輸入」。另外,你的IF中有什麼「空」?這個工程:

(function() { 
 
    
 
    var url = [false, false, false, false, false]; 
 
    var plus = 0; 
 
    
 
    $('form input').keyup(function() { 
 
    
 
    $('form input').each(function() { 
 
     plus++; 
 
     
 
     if ($(this).val() == '') 
 
     url[plus] = true; 
 
    }); 
 
    
 
    // WHAT'S EMPTY?? 
 
    
 
    /* 
 
    if (empty) { 
 
     $('#register').attr('disabled', 'disabled'); 
 
    } 
 
    else { 
 
     $('#register').removeAttr('disabled'); 
 
    } 
 
    */ 
 
    
 
    $("#demo").text(url); 
 
    }); 
 
    
 
})()
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> 
 
<div class="inner cover"> 
 
     <h1 class="cover-heading">Create.</h1> 
 

 
    <p class="lead"> 
 
     <form action="./index.php?p=create" method="post" class="form-horizontal" role="form"> 
 
      <div class="form-group"> 
 
       <input name="url" type="text" id="url" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url2" type="text" id="url2" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url3" type="text" id="url3" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url4" type="text" id="url4" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url5" type="text" id="url5" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <button type="submit" name="submit_url" class="btn btn-lg btn-default">Go!</button> 
 
      </div> 
 
     </form> 
 
    </p> 
 
    <p id="demo"></p> 
 
</div>

+0

我試圖這樣: '(函數(){ $( '形式輸入')KEYUP(函數(){ 變種URL = [FALSE,FALSE,FALSE,FALSE,FALSE]; 變種加= 0; $('form> input')。each(function(){ plus = plus + 1; if($(this).val()==''){ url [plus] = true ; } }); 如果(空){ $( '#登記冊')ATTR( '禁用', '禁用'); }其他{ $( '#登記冊')removeAttr(」。禁用'); } $(「#demo」)。text(url); }); })()' 但它仍然沒有任何輸出@ – Haxo201

+0

我Haxo201編輯我的答案添加一個新的代碼片段與您在您的評論提供的代碼。應工作,但我不得不註釋掉與「#register」,這是不是在你的HTML代碼中的部分 –

+0

呀對不起,我不是故意要離開,在那裏,那部分代碼是不相關的,現在我完全刪除它。但是我在

仍然沒有輸出 – Haxo201

0

因爲你selector選擇誰擁有父form標籤的所有輸入,但所有的輸入有父div標籤。

試試這個:

$('form input') 
0

$('form > input')選擇形式的直接輸入後裔,像這樣:

<form> 
    <input /> 
</form> 

但既然你有這樣的結構:

<form> 
    <div> 
    <input /> 
    </div> 
</form> 

你需要使用$('form > div > input'),或者更鬆散地只是$('form input')(沒有>字符)。


見這裏:

(function() { 
 
    $('form input').keyup(function() { 
 

 
     var url = [false, false, false, false, false]; 
 
     var plus = 0; 
 
     $('form input').each(function() { 
 
      plus = plus + 1; 
 
      if ($(this).val() == '') { 
 
       url[plus] = true; 
 
      } 
 
     }); 
 

 
     if (plus == 0) { 
 
      $('#register').attr('disabled', 'disabled'); 
 
     } else { 
 
      $('#register').removeAttr('disabled'); 
 
     } 
 

 
     $("#demo").text(url); 
 
    }); 
 
})()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="inner cover"> 
 
    <h1 class="cover-heading">Create.</h1> 
 

 
    <p class="lead"> 
 
     <form action="./index.php?p=create" method="post" class="form-horizontal" role="form"> 
 
      <div class="form-group"> 
 
       <input name="url" type="text" id="url" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url2" type="text" id="url2" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url3" type="text" id="url3" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url4" type="text" id="url4" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <input name="url5" type="text" id="url5" class="form-control" placeholder="URL"> 
 
      </div> 
 
      <div class="form-group"> 
 
       <button type="submit" name="submit_url" class="btn btn-lg btn-default">Go!</button> 
 
      </div> 
 
     </form> 
 
    </p> 
 
    <p id="demo"></p> 
 
</div>

+0

更新了我的文章。編輯字段時仍然沒有輸出。 – Haxo201

+0

修改我的代碼,你有'if(空)'哪裏'空'沒有被定義,它應該表示什麼?我用'plus == 0'取代了它。 – Shomz

+0

是的抱歉,這不是現在的相關代碼,我刪除了它。 – Haxo201

0

好了,經過幾個人的幫助,在這裏(信用各位,感謝您的幫助!)我終於到達一個完美的解決方案。 :)

$(window).load(function(){ 
    (function() { 
     $('form input').keyup(function() { 

      var url = [false, false, false, false, false]; 
      var plus = -1; 
      var next; 
      $('form input').each(function() { 
       plus = plus + 1; 
       if ($(this).val() != '') { 
        url[plus] = true; 
        next = plus + 1; 
        $("#url"+next).show(); 
       } else { 
        url[plus] = false; 
        next = plus + 1; 
        $("#url"+next).val(""); 
        $("#url"+next).hide(); 
       } 
      }); 
     }); 
    })() 
}); 

HTML:

<div class="inner cover"> 
    <h1 class="cover-heading">Create.</h1> 
    <p class="lead"> 
     <form action="./index.php?p=create" method="post" class="form-horizontal" role="form"> 
      <div class="form-group"> 
       <input name="url0" type="text" id="url0" class="form-control" placeholder="URL" required> 
      </div> 
      <div class="form-group"> 
       <input name="url1" type="text" id="url1" style="display:none" class="form-control" placeholder="URL"> 
      </div> 
      <div class="form-group"> 
       <input name="url2" type="text" id="url2" style="display:none" class="form-control" placeholder="URL"> 
      </div> 
      <div class="form-group"> 
       <input name="url3" type="text" id="url3" style="display:none" class="form-control" placeholder="URL"> 
      </div> 
      <div class="form-group"> 
       <input name="url4" type="text" id="url4" style="display:none" class="form-control" placeholder="URL"> 
      </div> 
      <div class="form-group"> 
       <button type="submit" name="submit_url" class="btn btn-lg btn-default">Go!</button> 
      </div> 
     </form> 
    </p> 
</div>