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の別のパラメーター名を使用します。eevent

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

あなたの混乱は冒頭の行から生じていると思います

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

jQuery().ready()ハンドラーは最初の引数jQueryとして受け取り$ます。ただし、これをハンドラーに誤ってコピーしたため、最初の引数としてオブジェクトを受け取ります。エラーをスローする行では、本質的に の代わりに呼び出しているため、エラー$jQueryreadyeventEventEvent(...)jQuery(...)object is not a function.

于 2013-10-28T16:01:27.950 に答える