Javascript 这个输入和jquery(this)不一样吗?

Javascript 这个输入和jquery(this)不一样吗?,javascript,jquery,Javascript,Jquery,我希望在Jquery中得到等效的“this” 如果我关闭我的日期选择器并在InvalidMsg中使用jQuery(this) 我得到了这个错误: Uncaught TypeError: Cannot read property 'patternMismatch' of undefined 但是如果我保持输入为空并提交表单。无效的MSG工作得很好 它不太清楚,但我有以下输入: <input type="text" name="birthday" class

我希望在Jquery中得到等效的“this”

如果我关闭我的日期选择器并在InvalidMsg中使用jQuery(this)

我得到了这个错误:

 Uncaught TypeError: Cannot read property 'patternMismatch' of undefined
但是如果我保持输入为空并提交表单。无效的MSG工作得很好

它不太清楚,但我有以下输入:

    <input type="text" name="birthday" 
           class="form-control date fulldate hasDatepicker" required="" 
           id="birthday" value=""
           placeholder="birthday" oninvalid="InvalidMsg(this,'Error dude.');"
           oninput="InvalidMsg(this,'error dude.');">
$('#birthday').datepicker({
            onClose: function (dateText, inst) {
                var d = new Date();
                var day1 = $(this).datepicker('getDate').getDate();                 
                var month1 = $(this).datepicker('getDate').getMonth();             
                var year1 = $(this).datepicker('getDate').getFullYear();
                var day2 = d.getDate();
                var month2 = d.getMonth();
                var year2 = d.getFullYear();

                console.log((month1).toString().length + " " + month1 );
                if(month1.toString().length < 2){
                    month1 = "0"+month1.toString();
                }
                if(month2.toString().length < 2){
                    month2 = "0"+month2.toString();
                }
                if(day1.toString().length < 2){
                    day1 = "0"+day1.toString();
                }
                if(day2.toString().length < 2){
                    day2 = "0"+day2.toString();
                }
                var e = year1+""+month1+""+day1;
                var f = year2+""+month2+""+day2;
                if(e>f || e.toString().length == 8)
                    InvalidMsg($(this),"Error Dude");
            }
        });
一切正常

现在我在这个输入上有了一个日期选择器:

    <input type="text" name="birthday" 
           class="form-control date fulldate hasDatepicker" required="" 
           id="birthday" value=""
           placeholder="birthday" oninvalid="InvalidMsg(this,'Error dude.');"
           oninput="InvalidMsg(this,'error dude.');">
$('#birthday').datepicker({
            onClose: function (dateText, inst) {
                var d = new Date();
                var day1 = $(this).datepicker('getDate').getDate();                 
                var month1 = $(this).datepicker('getDate').getMonth();             
                var year1 = $(this).datepicker('getDate').getFullYear();
                var day2 = d.getDate();
                var month2 = d.getMonth();
                var year2 = d.getFullYear();

                console.log((month1).toString().length + " " + month1 );
                if(month1.toString().length < 2){
                    month1 = "0"+month1.toString();
                }
                if(month2.toString().length < 2){
                    month2 = "0"+month2.toString();
                }
                if(day1.toString().length < 2){
                    day1 = "0"+day1.toString();
                }
                if(day2.toString().length < 2){
                    day2 = "0"+day2.toString();
                }
                var e = year1+""+month1+""+day1;
                var f = year2+""+month2+""+day2;
                if(e>f || e.toString().length == 8)
                    InvalidMsg($(this),"Error Dude");
            }
        });
$(“#生日”)。日期选择器({
onClose:函数(dateText,inst){
var d=新日期();
var day1=$(this.datepicker('getDate').getDate();
var month1=$(this.datepicker('getDate').getMonth();
var year1=$(this.datepicker('getDate').getFullYear();
var day2=d.getDate();
var month2=d.getMonth();
var year2=d.getFullYear();
console.log((month1.toString().length+“”+month1);
如果(month1.toString().长度<2){
month1=“0”+month1.toString();
}
if(month2.toString().长度<2){
month2=“0”+month2.toString();
}
if(day1.toString().长度<2){
day1=“0”+day1.toString();
}
if(day2.toString().length<2){
day2=“0”+day2.toString();
}
变量e=year1+“”+month1+“”+day1;
var f=第2年+月+第2天;
如果(e>f | | e.toString().length==8)
InvalidMsg($(此),“错误杜德”);
}
});
有什么想法吗?

你有“这个”

将其包装为jQuery对象,而不是DOM元素

InvalidMsg(this, "Error Dude");

不要用jQuery对象来包装它…这是真的,但是错误不会出现在当前输入“生日”的底部@Jean PhilippeMond
$(这)
是jQuery对象,因此它没有
validity
等属性,因此
输入。validity
输入
是指
$的参数(这)
传入的
InvalidMsg
)是
undefined
,然后表达式
input.validity.patternmatch
引发无法读取undefined的属性“patternmatch”的错误。那么@Jean philippeEmond您尝试过吗?@epascarello是的,我正在尝试执行jsfiddle,但InvalidMsg不是触发器。。我试过不用$()。消息错误不会出现。比如,如果他没有看到“输入”问题一:你的小提琴有错误,因为它没有设置正确。