2016-04-22 110 views
1

我试图阻止点击事件追加到html元素,当字符长度大于10时,但我想我遇到了语法错误,我可以'不知道。 (只是一些更多的信息,这是一个可选的计算器项目,有可能是更优雅的方式来做到这一点,但我们应该尝试没有任何深入的JS/jQuery学习)。这是我用来在将代码放入我的文件之前测试代码的jsFiddle。返回元素的文本长度(jquery)

我想最简单的方法是将每个数字推入一个元素(屏幕中继),然后抓住整个事物并应用eval()。我试图让控制台在注册超过10的字符限制时报告,但我没有收到任何东西。感谢指针! (编辑:因为举止)

https://jsfiddle.net/vx09p7kk/

// Evaluate value of screen 

$("#equals").click(function() { 
    var x = ($("#screen-relay").text()); 
    var finalValue = eval(x); 

    console.log(finalValue); 

    $("#output").html(finalValue); 
}); 

// Clear Function 

$("#clear").click(function() { 
    ($("#screen-relay, #output").text("")); 
}); 

// Char Limit Function 

var CharCount = ($("#screen-relay").text().length); 
if(CharCount > 10) { 
    console.log(bam) 
}; 
+0

screen-relay是输入框吗? –

+1

为什么不使用maxlength attr? – guradio

+1

CharCount只在一开始评估一次。把它放到你的点击处理程序中。 –

回答

0

可否请你看看下面更新小提琴链接:

https://jsfiddle.net/vx09p7kk/4/

我只是增加了一个计数器totalCharEntered其在每个字符插入时增加,当我们点击清除按钮时清除:

// Buttons 
var totalCharEntered = 0; 
$("#one").click(function() { 
    if(totalCharEntered <10){ 
    $("<span>1</span>").appendTo("#screen-relay"); 
    totalCharEntered++; 
    } 
}); 
$("#two").click(function() { 
    if(totalCharEntered <10){ 
    $("<span>2</span>").appendTo("#screen-relay"); 
    totalCharEntered++; 
    } 
}); 
$("#plus").click(function() { 
    if(totalCharEntered <10){ 
    $("<span>+</span>").appendTo("#screen-relay"); 
    totalCharEntered++; 
    } 
}); 

// Clear Function 

$("#clear").click(function() { 
    ($("#screen-relay, #output").text("")); 
    totalCharEntered = 0; 
}); 

我认为这会对您有所帮助。

+0

很棒,我在数组循环之前看到过,但没有想到这一点。非常感谢你。 编辑:如果任何其他贡献者检查回来,谢谢你,我正在尝试你所有的建议。 – Keenanp

+0

谢谢@Keenanp ...':)'! – vijayP