2012-02-26 105 views
1

我正在使用Jquery獲取輸入值,因爲輸入的數字在其中輸入。以及根據輸入的數字在帶有raphaeljs的div #canvas_container上繪製圓圈。目前我正在嘗試設置一個最大輸入值,如if (value <= 50) {,其中value是用戶的輸入。使用if語句設置輸入字段的最大值

我最終想要實現的是如果用戶鍵入30,繪製30個圓圈。如果用戶輸入60或任何值50和50以上的圓圈繪製。創建繪製到canvas_container的最大數量的圓。現在我只是試圖在輸入任何值爲50或更高的值時不會發生任何事情,但是一些圈子被繪製但只有少數幾個,我不知道爲什麼。

http://jsfiddle.net/anderskitson/sHNHe/9/

var paper = new Raphael(document.getElementById('canvas_container'), 500, 500); 
$("input").keyup(function() { 
    var value = $(this).val(); 

    if (value <= 50) { 

    if (value === "") { 
     var circle = paper.circle(110, 50, 30); 
     var clear = paper.clear(); 
    } else { 

     for (i = 0; i <= value; i++) { 

      var randomNumber1 = Math.floor(Math.random() * 201) - 100; 
      var randomNumber2 = Math.floor(Math.random() * 201) - 100; 

      var plusOrMinus = Math.random() < 0.5 ? -1 : 100; 

      var circle = paper.circle(randomNumber1, randomNumber2, 20); 
     } 
    } 

    }else { 
     //this should run if a value of 50 or above is entered 
     } 

}).keyup(); 

回答

2

據我所看到的,你有兩個錯誤:

  1. 你需要清除每個KEYUP你的論文,否則新的社交圈將被添加到()
  2. 如果value> 50有點複雜,您可以處理

讓我們來解決這個問題(在一個簡化版本):

var paper = new Raphael(25, 25, 500, 500); 
$("input").keyup(function() { 
    var value = parseInt($(this).val()); 
    paper.clear(); 

    if (value > 50) { 
     value = 50; 
    } 

    for (i = 0; i < value; i++) { 

     var randomNumber1 = 50 + 5 * i; 
     var randomNumber2 = 50 + 5 * i; 

     var circle = paper.circle(randomNumber1, randomNumber2, 20); 
    } 
});​ 

看一看在Fiddle,我希望這是你想要達到的目標。

+0

如果我在你的例子中輸入ax值超過50,我會得到x個圈數,無論我輸入的是多少個數字,我都只能得到50個。 – 2012-02-26 18:06:38

+0

不在我的瀏覽器中,它停在50 ... – Thorsten 2012-02-26 19:25:03

+0

哦你的權利,我沒有注意。我一直認爲它在增加,但它保持不變。感謝您爲我簡化這一點。 – 2012-02-26 20:26:59