我有:
<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
答案 0 :(得分: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..})
然后它来自 GLOBAL范围
答案 1 :(得分: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>
这让我知道textarea上的事件change
就像jQuery的blur
...不确定,这就是你想要的结果。
评论后编辑
<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>
答案 2 :(得分:1)
domReady
声明之外。目前,您的函数解析如下:
$(window).load(function(){
var function1 = function (p1, p2, p3) {
alert('p1:' + p1 + ' p2:' + p2 + ' p3:' + p3);
};
});
您需要在head
标记内找到它。从下拉列表中选择no wrap - in <head>
选项。
答案 3 :(得分:0)
那是因为你的function1只在传递给jQuery的匿名函数的范围内。
当你使用jQuery时,为什么不完全使用它?将.change()
处理程序附加到.t1
-
$(function () {
$(".t1").change(function(){
alert("Do your thing here");
});
});