我正在编写我的第一个jQuery并获得Uncaught TypeError: object is not a function
。最初设置水印的代码的第一部分很好。但是,当我尝试访问输入字段的blur
时,focus
和.val()
函数都会抛出错误。谁知道原因?
jQ(document).ready(function($) {
var $watermark = 'dd-MMM-yyyy';
var $calendarVal = $('#tabForm\\:opStartInputDate').val(); /* this works no problem */
if ($calendarVal == null || $calendarVal == '')
{
alert('Inside null or empty conditional');
$('#tabForm\\:opStartInputDate').val($watermark).addClass('watermark'); /* this works no problem */
}
$('#tabForm\\:opStartInputDate').blur(function($){
var blurCalendarVal = $('#tabForm\\:opStartInputDate').val(); /* this line throws the error */
if (blurCalendarVal == null || blurCalendarVal == '' || blurCalendarVal.length == 0)
{
alert('Inside blur function conditional'); /* Never make it here */
$('#tabForm\\:opStartInputDate').val(watermark).addClass('watermark');
}
})
$('#tabForm\\:opStartInputDate').focus(function($){
/*if ($(this).val() == watermark) This is commented out but this throws the error as well
{
$(this).val('').removeClass('watermark');
}*/
var $focusCalendarVal = $('#tabForm\\:opStartInputDate').val(); /* this line throws the error */
var $watermarkDate = 'dd/MMM/yyyy';
if ($focusCalendarVal == $watermarkDate)
{
alert('Inside focus function conditional');
$('#tabForm\\:opStartInputDate').val('').removeClass('watermark');
}
})
});
答案 0 :(得分:0)
这一行:
$('#tabForm\\:opStartInputDate').blur(function($){
您正在将$
重新映射为传递给处理程序的event
对象。使用其他参数名称,例如e
或event
。
$('#tabForm\\:opStartInputDate').blur(function(e){ // fixed
我认为你的困惑源于开场白
jQ(document).ready(function($) {
jQuery().ready()
处理程序接收jQuery
作为其第一个参数,因此在此使用$
可确保$
jQuery
处于ready
处理程序内。但是,您已将此错误地复制到event
处理程序中,这些处理程序接收Event
个对象作为其第一个参数。在投掷错误的行中,您基本上是调用Event(...)
而不是jQuery(...)
,因此错误object is not a function.