Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Jquery动态输入最大不工作数_Javascript_Jquery_Html - Fatal编程技术网

Javascript 使用Jquery动态输入最大不工作数

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).

创建了一个简单的输入,并尝试使用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).val()

在每个示例中,您创建了两个
更改
钱德勒。第一个示例具有以下操作顺序:

  • 如果数字大于77,则将其设置为77
  • 如果数字大于50,则将其设置为50
第二个示例具有以下操作顺序:

  • 如果数字大于77,则将其设置为77
  • 如果数字大于79,则将其设置为79
在第二个示例中,当您将其与79进行比较时,该数字将永远不会大于77

通过将最大值设置为77和79,可以有效地将其设置为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。我必须重置输入,但不确定如何实现它。