jquery动态创建数组
jquery create array dynamically
我有一个包含3个输入字段的页面。在这些字段中,我想得到最大值。我想实现的是,用户可以填写一个字段,该字段的值被动态添加到数组中,如果该值大于其他两个输入字段的值,则该值也会显示在文本字段中。我希望能够在没有onBlur()函数的情况下完成这项工作(如果可能的话)。尝试使用keyup函数,但这将继续向数组中添加数字,其中只有3个数字可用。。
这就是我目前所拥有的:
$(document).ready(function() {
$('#a').keyup(function() {
var x = $('#a').val();
hs.push(x);
});
$('#b').keyup(function() {
var y = $('#b').val();
hs.push(y);
});
$('#c').keyup(function() {
var z = $('#c').val();
hs.push(z);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<input id="a" type="text" />
<input id="b" type="text" />
<input id="c" type="text" />
如果我在a中输入1,在b中输入2,在c中输入3,然后改变主意,将c从3改为33,我的数组中现在有4个数字(1,2,33),而我只想要3(1,23)。。。
我猜keyup函数不是这里的方法,但我希望尽可能保持它的动态性,而不会强迫用户改变任何输入的焦点来获得结果。
如果可能的话,有人知道怎么做吗?
这是因为.push()
附加到数组。您将希望更改某个索引处的项目。在您的情况下,hs[0]
、hs[1]
和hs[2]
将被更改,而不是push
。因此,您可以使用hs = [null, null, null]
并适当地更改值。使用数组不是最好的方法,您可能希望使用具有3个属性a
、b
和c
的对象。以下是如何做到这一点:
var hs = {
'a': null,
'b': null,
'c': null
};
然后只需设置元素hs.a
或hs.b
或hs.c
:
$('#a').keyup(function() {
var x = $('#a').val();
hs.a = x;
});
$('#b').keyup(function() {
var y = $('#b').val();
hs.b = y;
});
$('#c').keyup(function() {
var z = $('#c').val();
hs.c = z;
});
数组似乎不是一个方便的数据结构。您可能需要一个对象来模拟带有input
元素id的键的hashmap。
例如
简单
<input id="a" type="text" />
<input id="b" type="text" />
<input id="c" type="text" />
var hs = {};
$(document).ready(function () {
$('input').keyup(function () {
hs[this.id] = $(this).val();
});
});
FIDDLE
谢谢大家,
你是最棒的。
我最后使用了两个答案的组合。我不是程序员,刚开始使用Jquery,所以我的解决方案可能不是最好的,但它对我有效。。。。这就是最终结果:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
var hs= {
'a': null,
'b': null,
'c': null,
};
$(document).ready(function() {
$('input').keyup(function() {
hs[this.id] = $(this).val();
var x = hs["a"];
var y = hs["b"];
var z = hs["c"];
$("#d").val(Math.max(x,y,z));
});
});
</script>
</head>
<body>
<input id="a" type="text"/>
<input id="b" type="text"/>
<input id="c" type="text"/><br><br>
<input id="d" type="text"/>
</body>
</html>
再次感谢,Hans
相关文章:
- 从多维嵌套json数组创建下拉列表
- 为对象数组创建列表项
- 如何在cycle js中从JSON数组创建组件
- 使用数据数组创建多个类似组件
- 如何在 Angular JS 中从关联数组创建多个复选框
- 如何为给定数组创建跨度列表
- 如何在javascript中使用2个一维数组创建层次结构树
- 从数据对象数组创建折线图
- 从 javascript 数组创建一个 Jquery 数组
- Angular2从数组创建一个列表
- 使用JavaScript's Reduce从对象数组创建数组
- 如何从数组创建 jqtree
- 从字符串数组创建唯一组合数组
- 反应.js通过数组创建循环
- 从数组创建新元素,直到每秒数组为空
- 如何使用其他流的值数组创建流
- JavaScript:从字节数组创建图像资源
- 使用拆分字符串的数组创建一个对象
- 从一组数据或数组创建对象
- 多维数组 - 创建一个表