1

我有:

<textarea class="t1" onchange="function1('1','2','3')"></textarea>

<script type="text/javascript">
    $(function() {
        var function1 = function(p1, p2, p3) {
            alert('p1:' + p1 + ' p2:' + p2 + ' p3:' + p3);
        };
    });
</script>

但是,当我更改 textarea 的文本时,什么也没有发生。

我在控制台上收到此错误:

未捕获的 ReferenceError:未定义 function1

现场小提琴

4

4 回答 4

1

像这样试试

 <script type="text/javascript">
        var function1 = function(p1, p2, p3) {
            alert('p1:' + p1 + ' p2:' + p2 + ' p3:' + p3);
        };
 </script>

 <textarea class="t1" onchange="function1('1','2','3')"></textarea>

首先你不需要定义(初始化)函数,然后你可以调用它......并且不要在下面定义它

$(function(){..HERE..})

然后它属于全球范围

于 2013-04-02T12:20:46.710 回答
1

如果您使用的是 jQuery:

<textarea class="t1"></textarea>

<script type="text/javascript">
    $(function() {
        $('.t1').on('change', function(){
            function1('1','2','3');
        });
        var function1 = function(p1, p2, p3) {
            alert('p1:' + p1 + ' p2:' + p2 + ' p3:' + p3);
        };
    });
</script>

http://jsfiddle.net/U4sx7/

这让我了解到changetextarea 上的事件就像blurjQuery 一样……不确定,这就是你最终想要的。

评论后编辑

<textarea class="t1" data-pam1="1" data-pam2="2" data-pam3="3"></textarea>

<script type="text/javascript">
    $(function() {
        var function1 = function(p1, p2, p3) {
                alert('p1:' + p1 + ' p2:' + p2 + ' p3:' + p3);
        };
        $('.t1').on('change', function(){
           var param1 = $(this).data('pam1'),
               param2 = $(this).data('pam2'),
               param3 = $(this).data('pam3');
           function1(param1,param2,param3);
         });
     });
</script>

http://jsfiddle.net/U4sx7/1/

于 2013-04-02T12:28:21.340 回答
1
  1. 更改定义函数的位置(在小提琴中,检查 jQuery 选择框附近的第二个下拉菜单)
  2. 将函数定义移到domReady声明之外。

目前,您的函数解析如下:

$(window).load(function(){
var function1 = function (p1, p2, p3) {
    alert('p1:' + p1 + ' p2:' + p2 + ' p3:' + p3);
};
});

你需要它在head标签内。no wrap - in <head>从下拉列表中选择选项。

于 2013-04-02T12:29:04.047 回答
0

那是因为您的 function1 仅在传递给 jQuery 的匿名函数的范围内。
当您使用 jQuery 时,为什么不完全使用它呢?将.change()处理程序附加到.t1-

$(function () {
  $(".t1").change(function(){
    alert("Do your thing here");
  });
});

更新小提琴

于 2013-04-02T12:23:37.270 回答