jQuery水印抛出TypeError:对象不是函数

时间:2013-10-28 15:06:37

标签: javascript jquery

我正在编写我的第一个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');
    }
})

});

1 个答案:

答案 0 :(得分:0)

这一行:

$('#tabForm\\:opStartInputDate').blur(function($){

您正在将$重新映射为传递给处理程序的event对象。使用其他参数名称,例如eevent

$('#tabForm\\:opStartInputDate').blur(function(e){ // fixed

我认为你的困惑源于开场白

jQ(document).ready(function($) {

jQuery().ready()处理程序接收jQuery作为其第一个参数,因此在此使用$可确保$ jQuery处于ready处理程序内。但是,您已将此错误地复制到event处理程序中,这些处理程序接收Event个对象作为其第一个参数。在投掷错误的行中,您基本上是调用Event(...)而不是jQuery(...),因此错误object is not a function.