Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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 如何正确地将keyup()函数应用于具有不同输入的不同DOM元素?_Javascript_Jquery_This_Apply_Bind - Fatal编程技术网

Javascript 如何正确地将keyup()函数应用于具有不同输入的不同DOM元素?

Javascript 如何正确地将keyup()函数应用于具有不同输入的不同DOM元素?,javascript,jquery,this,apply,bind,Javascript,Jquery,This,Apply,Bind,我试图限制不同的最小和最大输入的日期,月份和年份输入的出生日期。然而,函数中似乎有一些错误。我可以知道写这个函数的正确和好方法是什么吗?我尝试了箭头功能,但不起作用。我应该用bind吗?非常感谢你 $(document).ready(function () { var minMonth = 1; var maxMonth = 12; var minDay=1; var maxDay=31; var minYear=1900; var maxYear=2019; function

我试图限制不同的最小和最大输入的日期,月份和年份输入的出生日期。然而,函数中似乎有一些错误。我可以知道写这个函数的正确和好方法是什么吗?我尝试了箭头功能,但不起作用。我应该用bind吗?非常感谢你

$(document).ready(function () {
 var minMonth = 1;
 var maxMonth = 12;
 var minDay=1;
 var maxDay=31;
 var minYear=1900;
 var maxYear=2019;

 function minMaxDob(minDob, maxDob){
        if($(this).val() > maxDob){
            $(this).val(maxDob);
          }
        if($(this).val() < minDob){
            $(this).val(minDob);
          }
      }

 $("#dob_month").keyup(function(){
    minMaxDob(minMonth,maxMonth);
 });
 $("#dob_day").keyup(function(){
    minMaxDob(minDay,maxDay);
 });
 $("#dob_year").keyup(function(){
    minMaxDob(minYear,maxYear);
 });
});

您必须像下面这样将jQuery对象传递给minMaxDob,因为这是指当前正在执行的函数,因为您正在调用一个帮助函数,它不再指DOM对象,而是指函数minMaxDob:

$(document).ready(function () {
  var minMonth = 1;
  var maxMonth = 12;
  var minDay=1;
  var maxDay=31;
  var minYear=1900;
  var maxYear=2019;

  function minMaxDob(jqObj, minDob, maxDob){
    if(jqObj.val() > maxDob){
        jqObj.val(maxDob);
      }
    if(jqObj.val() < minDob){
        jqObj.val(minDob);
      }
  }

  $("#dob_month").keyup(function(){
    minMaxDob($(this),minMonth,maxMonth);
  });
  $("#dob_day").keyup(function(){
    minMaxDob($(this),minDay,maxDay);
  });
  $("#dob_year").keyup(function(){
    minMaxDob($(this),minYear,maxYear);
  });
});
您忘记传递对象。 每次在函数内部调用函数时,函数将只读取传递的数据,而不是顶部的变量或对象。 例如:

function run(){
x=2;
y=3;
check(x);
//or
check2(x,y);
}
function check(x){
if(x<y){
console.log('in that example you will have a error becouse you are not passing 2nd val')
}
}
function check2(x,y){
if(x<y){
console.log('Yes, x is smaller than Y, we send all necessary data')
}
}
简单的广告“这”和重建您的主要功能

下面是您的脚本和代码片段 $document.readyfunction{ var minMonth=1; var maxMonth=12; var minDay=1; var maxDay=31; var minYear=1900; var maxYear=2019年; 函数minMaxDobminDob,maxDob,el{ ifel.val>maxDob{ 瓦尔马克斯多布; } ifel.val非常感谢你的帮助!!:D