2011-12-29 75 views
0

我有这个小计算器我的工作 - http://jsfiddle.net/sturobson/reCjA/31/如果4号进入这样做,3为此,2做到这一点,1做这个jQuery

我目前想它,这样你可以在保证金表单域中输入CSS Margin,并返回正确的结果。

即。

if I enter 10, then I get a result of 10% 
if I enter 10, 10 then I get a result of 10% 10% 
if I enter 10, 10, 10 then I get a result of 10% 10% 10% 
if I enter 10, 10, 10, 10 then I get a result of 10% 10% 10% 10% 

的时刻,如果我输入10,我得到10%0 0 0

我想要的0,但只有当所有四个数字在那里。

任何想法?

+0

如果你在一个文本框中输入这些数字,分裂他们的逗号,并通过阵列构建的最终结果进行迭代。 – Dimitri 2011-12-29 22:12:52

+0

呃?这已经从我找到,玩过并'借来'的片断合并在一起我不确定如何去做你在想什么:/ – 2011-12-29 22:16:05

+0

它看起来像你原来的小提琴的作品...? http://jsfiddle.net/sturobson/reCjA/ – BZink 2011-12-29 22:18:45

回答

1

听起来像是时间的一些条件逻辑。

var value = getFromText(); 
var pieces = value.split(",") 
        .map(function (piece) { return piece.trim(); }) 
        .filter(function (piece) { return !!piece; }); 

var derivedPieces = (function() { 
    switch (pieces.length) { 
     case 0: 
      return []; 
     case 1: 
      return [pieces[0], pieces[0], pieces[0], pieces[0]]; 
     case 2: 
      return [pieces[0], pieces[1], pieces[0], pieces[1]]; 
     case 3: 
      return [pieces[0], pieces[1], pieces[2], pieces[1]]; 
     case 4: 
      return pieces; 
     default: 
      return [pieces[0], pieces[1], pieces[2], pieces[3]]; 
    } 
}()); 

var withPercentSigns = derivedPieces.map(function (piece) { return piece + "%"; }) 
            .join(" "); 

Working sample on JSFiddle

+0

这看起来像我需要做的:o) – 2011-12-29 22:20:11

+0

我需要改变什么位才能在我的小提琴中工作?件=边际? – 2011-12-29 22:30:03

+0

你也是小提琴演出什么我键入的结果4? :/ – 2011-12-29 22:31:12

0

做对整数值,而不是字符串的评估。

if (shorthand1 != '0'){ 
    shorthand1 += '%'; 
}  

成为...

if (shorthand1 != 0){ 
     shorthand1 += '%'; 
} 
+0

在JavaScript中,这些是等价的,只要你使用'!='而不是'!=='。 – Domenic 2011-12-29 22:17:59

+0

不是根据小提琴的结果。进行更改,结果发生变化。 – BZink 2011-12-29 22:22:56

+0

啊,我明白了为什么。这是因为'“”!=“0”'是'true',但'“”!= 0'是'false'。不是真正解决问题根源的方法......但是如果StackOverflow允许我>: – Domenic 2011-12-29 22:25:32

0

使用在你的阵列(那些你当你分割一个场)与switch沿.length财产。