jquery调用函数对输入按事件更改

时间:2013-01-15 11:22:20

标签: jquery html

修改

我没有很好地描述我的问题,所以我会再试一次。

我有一个加载外部js的页面,在页面上我有一个名为calculate_totals()的函数。我想要的是从外部js中的函数调用函数calculate_totals()。

这是一个在外部js中加载的javascript

    function selectItemMouse(thisVar)
    {   
        var searchValue = thisVar.attr('data-name');
        thisVar.parent().parent().parent().parent().children('.list').val(searchValue);


        //alert(thisVar.parent().parent().parent().parent().next().find('input').focus());

        thisVar.children().children().each(function()
        {
            var dataId = $(this).attr('data-id');
            var value = $(this).attr('data-name');

            //This change the input of my form
            $(thisVar).parent().parent().parent().parent().children().children('.'+dataId).val(value);
        });

        $('.customerResults').hide();
calculate_totals();

    }

2 个答案:

答案 0 :(得分:1)

您可以在输入上放置一个更改的监听器:

$(document).ready(function(){
    $('#input').change(function(){
        alert("alert here");
    });
});

答案 1 :(得分:1)

基于评论会话: calculate_totals在$(document).ready(function(){});

内定义

因为在它之外没有看到它。基本上,它仅在$(document).ready(function(){});内可见。把它移到它外面吧。现在,它将在任何地方变得全球化和可见。

而不是

$(document).ready(function(){
   function calculate_totals() {} // this function is visible inside of a ready function only
  ///..... other code here
});

使用:

function calculate_totals() {} // now it is a part of global context
$(document).ready(function(){
  ///..... other code here   
});

之后你应该在selectItemMouse和任何其他地方提供它。

此外,我会考虑更新您的代码。

thisVar.parent().parent().parent().parent().children('.list').val(searchValue);

这种链的使用不灵活。只是你将使用其他元素包装thisVar元素 - 你需要更新你的JS代码。

查看.parents.closest。例如,您可以更改上面的一行:

thisVar.closest(".class_common_parent").children('.list').val(searchValue);

.class_common_parent是使用parent().parent().parent().parent().

进行的元素类