0

我正在编写我的第一个 jQuery 并获得一个Uncaught TypeError: object is not a function. 最初设置水印的代码的第一部分很好。但是,当我尝试访问输入字段时,blurfocus函数都会引发错误。.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');
    }
})

});

4

1 回答 1

0

这一行:

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

您正在重新映射$event传递给处理程序的对象。使用不同的参数名称,例如eor 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.

于 2013-10-28T16:01:27.950 回答