2015-08-20 4 views
0

Я получаю эту ошибку и с трудом исправляю ее. Я получаю следующее сообщение об ошибке: callback.call не является функциейcallback.call не является функцией

Я опубликовал нижеприведенные фрагменты кода для комментариев, кажется, что ошибка запускается при вызове validateCheckBox (o). Я понимаю, что ошибка запускается из функции, выходящей из контекста, но не совсем точно, как исправить.

function checkLength(o, n, min, max) { 
    console.log(arguments.length); 
    if (arguments.length < 4) { 
     // issue here with callback.call is not a function 
     if (validateCheckBox(o)){ 
      validateCheckBox(o); 
     } 
    }else { 
     if (o.val().length > max || o.val().length < min) { 
     o.addClass("ui-state-error"); 
     updateTips("Length of " + n + " must be between " + 
      min + " and " + max + "."); 
     return false; 
     } else { 
     return true; 
     } 

    } 

} 

function validateCheckBox(o) { 

    var css = $(".border").css({ 
           "border-color": "", 
           "border-weight": "", 
           "border-style" : "", 
           "background-color": "", 
           "background-image": "", 
           "background-repeat":"", 
           "background-position":"" 
          }); 
    //console.log(css); 
    var invalidChkBox = { 
         "border-color":"#cd0a0a", 
         "border-weight":"1px", 
         "border-style":"solid", 
         "background-color": "#feflec", 
         "background-image": "url('lib/jquery-ui/css/images/ui-bg_glass_95_fef1ec_1x400.png')", 
         "background-repeat": "repeat-x", 
         "background-position": "50% 50%" 


      } 

    // throwing error callback is not defined 
    var isChecked = $("#verification").is(":checked"); 

    if (isChecked == false || isChecked == undefined) { 

     $(".border" ).css(invalidChkBox); 
     o.addClass("ui-state-error"); 
     $(".validateTips").text("You must agree that all information is accurate and true, by checking the box."); 

    }else{ 
     // reported bug callback.call is not a function @error below 
     $(".validateTips").css('display', null).text(""); 
     $(".border" ).css(css); 



    } 


} 

valid = valid && checkLength (verification, "Verification", 1); 

Заранее спасибо.

+0

Какие аргументы предоставлены для вызова 'checkLength'? – Mahout

+0

(элемент, строковая метка, мин, макс), например. («#first_name», «Имя», 3, 30); – Michael

ответ

0

На основе вашего комментария проблема может быть первым аргументом checkLength, являющимся строкой вместо объекта JQuery. Похоже, звонки должны быть больше как

checkLength($("#first_name"), "First name", 3, 30); 

Обратите внимание на $("#first_name"), который проходит через объект, представляющий JQuery элемент с идентификатором #first_name, а не только строки "#first_name".

+0

мои извинения, первый аргумент - объект jquery, например. first_name = $ ("#first_name"), хранящееся внутри переменной – Michael

+0

Можете ли вы объяснить, почему у вас есть 'if (validateCheckBox (o)) { validateCheckBox (o); } '? – Mahout

+0

Относительно if (validateCheckBox (o)) {validateCheckBox (o); } Я думал, что это предотвратит ошибку, т. Е. если validateCheckBox существует, тогда назовем его иначе эта функция не будет вызываться. – Michael

0

благодарит за помощь. Это оказалось чем-то простым. Я пытался назначить правила css классу с уже определенными на нем правилами ...

var css = $(".border").css({ 
           "border-color": "", 
           "border-weight": "", 
           "border-style" : "", 
           "background-color": "", 
           "background-image": "", 
           "background-repeat":"", 
           "background-position":"" 
          }); 
$(".border" ).css(css); --> line throwing error.... 
Смежные вопросы