Javascript 这个输入和jquery(this)不一样吗?
我希望在Jquery中得到等效的“this” 如果我关闭我的日期选择器并在InvalidMsg中使用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
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不是触发器。。我试过不用$()。消息错误不会出现。比如,如果他没有看到“输入”问题一:你的小提琴有错误,因为它没有设置正确。