2014-10-07 3 views

ответ

0

Это потому, что он находится внутри крышки и, следовательно, не является глобальным. Удалите эту упаковку $, и все должно быть хорошо.

function upload() { 
    // (...) code 
} 
$("#select").change(function() { 
    upload(); 
}) 

Или поставить <select> код внутри готовой оболочки DOM. Он тоже должен работать. Или объявите его как

window.upload = function(){ 
    // this is global 
} 
1

Фактически вы предоставили именованный обратный вызов обработчику событий быстрого доступа DOM. Вы должны объявить его глобально (или в том же объеме).

Этот пример имеет их в той же области:

$(function(){ // DOM ready handler 
    function upload() { 

    }; 

    $("#select").change(function() { 
     upload(); 
    }); 
}); 

Поскольку функция не имеет параметров она сокращается до:

$(function(){ // DOM ready handler 
    function upload() { 

    }; 

    $("#select").change(upload); 
}); 

-уборщик образом (если функция не используется повторно) является лишь чтобы поместить код в обратный вызов change:

$(function(){ 
    $("#select").change(function() { 
     // Do the upload code here instead 
    }); 
}); 
0

Попробуйте следующее: определите функцию upload внутри $(function(){ }); и назовите его внутри change обработчик события select коробка.

$(function(){ 
    //define function 
    upload = function(){ 
    .... 
    } 

    $("#select").change(function() { 
    //call function 
    upload(); 
    }); 
}); 
+0

На самом деле ваша «Примечание» неверна. Пока он определен в том же объеме, он будет существовать. Также он должен быть определен только до того, как он будет фактически вызван. Javascript проверяет только время вызова :) –

+0

@TrueBlueAussie, да, вы правы. Я удалил свою «заметку». Благодаря :) –

0

Вы должны установить («#select»). Изменить внутри Функция готовности и функция загрузки вне готовой функции.

function upload() { 
// any thing you want to do after select 
}; 

$(document).ready(function() { 

$("#select").change(function() { 
upload(); 
}) 

});