为什么这个功能会发射两次?

时间:2011-06-22 15:39:03

标签: javascript jquery

我有这个功能,当用户粘贴到textarea时触发。我有一个定时函数,在此函数内部触发,以便函数可以获取用户粘贴的textarea中的文本。

我的问题是在safari中,这个函数每次都会触发两次,我无法解决原因。

function Func1(){

    var valu = $('#thoughts').val();
    $(function () { 

        $.post("paste.php", { uid: $('#uid').val(), paste: $('#thoughts').val()},function(data){

            $('#pasteditems').prepend($(data).hide().fadeIn(1300));

        });

    });

    $('#thoughts').css('background','#FFFFFF');
    $('#thoughts').css("color","#AAD1ED");
    $('#thoughts').css("font-size","90px");
    $('#thoughts').val("");    

}

function OnPaste(){

    $('#thoughts').css("font-size","18px");
    $('#thoughts').css('background','#EEEEEE');
    setTimeout("Func1()", 0800);

}

html

<textarea onblur='self.focus' wrap="physical" onpaste="OnPaste ()" id="thoughts" name="thoughts"></textarea>

3 个答案:

答案 0 :(得分:2)

尝试:

setTimeout(Func1, 800);

Safari可能会在第一次读取该代码时评估该函数,因为您上面有括号。

答案 1 :(得分:0)

尝试更改setTimeout功能:

setTimeout(Func1, 0800);

答案 2 :(得分:0)

这是另一种方式

setTimeout(function(){ Func1(); }, 800);