我有一个包含 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,3,33),而我只想要 3 (1,2,33)...
我猜 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;
});
关于javascript - jquery动态创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28700377/