Javascript 使用Jquery动态输入最大不工作数
创建了一个简单的输入,并尝试使用Jquery设置最大值。最初,它将该值设置为77,然后将最大值降低到50 下面的例子很有效Javascript 使用Jquery动态输入最大不工作数,javascript,jquery,html,Javascript,Jquery,Html,创建了一个简单的输入,并尝试使用Jquery设置最大值。最初,它将该值设置为77,然后将最大值降低到50 下面的例子很有效 $(文档).ready(函数(){ minMaxAge(“测试输入”,0,77) minMaxAge(#test input),0,50)//文本框max现在50//工作 }); 函数minMaxAge(id,min,max){ $(id).更改(函数(){ 如果($(this).val()>max) { $(此).val(最大值); } else if($(this).
$(文档).ready(函数(){
minMaxAge(“测试输入”,0,77)
minMaxAge(#test input),0,50)//文本框max现在50//工作
});
函数minMaxAge(id,min,max){
$(id).更改(函数(){
如果($(this).val()>max)
{
$(此).val(最大值);
}
else if($(this).val()
在每个示例中,您创建了两个
更改
钱德勒。第一个示例具有以下操作顺序:
- 如果数字大于77,则将其设置为77
- 如果数字大于50,则将其设置为50
- 如果数字大于77,则将其设置为77
- 如果数字大于79,则将其设置为79
$(document).ready(function () {
minMaxAge("#test-input",0,79);
});
这种方法的问题在于,在事件处理程序序列运行时,实际上没有一种好的方法来维护所发生事件的上下文。如果我这样做,我将只有一个事件处理程序,并让
minMaxAge()
函数调整最小值和最大值。大概是这样的:
function minMaxAge(id, min, max) {
var $element = $(id);
if (!$element.hasClass("handler-added")) {
// need to initialize the "change" event handler
$element.addClass("handler-added")
.on("change", function() {
var max = $element.data("max"), min = $element.data("min");
if (+$element.val() > max)
$element.val(max);
else if (+$element.val() < min)
$element.val(min);
});
}
// update min and max
if ($element.data("min") == null || +$element.data("min") > min)
$element.data("min", min);
if ($element.data("max") == null || +$element.data("max") < max)
$element.data("max", max);
);
函数minMaxAge(id、min、max){
var$element=$(id);
if(!$element.hasClass(“添加了处理程序”)){
//需要初始化“更改”事件处理程序
$element.addClass(“已添加处理程序”)
.on(“更改”,函数(){
var max=$element.data(“max”),min=$element.data(“min”);
如果(+$element.val()>max)
$element.val(最大值);
else if(+$element.val()min)
$element.data(“min”,min);
如果($element.data(“max”)==null | |+$element.data(“max”)
这种方法只添加一次“change”事件处理程序。之后,对
minMaxAge()
的后续调用将更新jQuery.data()
属性中保留的最小和最大限制。对.change()的每次调用
添加一个事件处理程序,而不删除任何以前的处理程序。在调用认为最大值为79的处理程序时,以前的处理程序已经将该值减少到77。@我明白了,但如何在每次更改事件中重置最大值。是否有其他方法。我已使用一个新的代码段更新了该问题,其中包含我试图实现的目标。问题是,您只在一个位置跟踪值。我将添加一个我认为更好的答案。我已更新了我的问题David。我必须重置输入,但不确定如何实现它。