在使用Javascript创建新动态输入之前触发Onblur事件

时间:2010-12-24 07:20:43

标签: javascript-events

我正在动态地向表单添加文本输入。新的输入也获得了关注。在添加onblur事件时,onblur事件似乎在添加输入后立即触发。为了测试这个,我为onblur事件添加了警报。出现警报,仅在单击“确定”后才会创建新输入。这种情况发生在IE,Firefox和Opera中。

以下是我正在使用的代码。为了便于阅读,我删除了所有其他代码。

“”

<script type="text/javascript">
var count = 1;
function addinput () {
    var inpmaster = document.getElementById("inpMaster");
    var myinput = document.createElement("input");
    myinput.id = "myfield"+count;
    myinput.name = "myfield"+count;
    myinput.type = "text";
    myinput.onblur = alert("woot");
    inpmaster.parentNode.insertBefore(myinput,inpmaster);
    inpmaster.disabled="disabled";
    myinput.focus();
    count++;
};
</script>

<body>

    <form action="" method="post"  id="admin">
        <input id="inpMaster" type="text" name="prodDesccc" onfocus="addinput();" />
    </form>

</body>

1 个答案:

答案 0 :(得分:0)

这是因为你使用alert(“woot”)来分配onblur事件而不是function(){alert(“woot”);}。 将您的代码更改为:

function addinput () {
    var inpmaster = document.getElementById("inpMaster");
    var myinput = document.createElement("input");
    myinput.id = "myfield"+count;
    myinput.name = "myfield"+count;
    myinput.type = "text";
    myinput.onblur = function(){alert("woot");};
    inpmaster.parentNode.insertBefore(myinput,inpmaster);
    inpmaster.disabled="disabled";
    myinput.focus();
    count++;
};