1

在我的表单中,我有一些我已经应用onblur事件的字段。问题是如果我在输入某些字段后直接单击保存,则不会调用保存。我需要点击两次。有关更多说明,请参阅以下步骤,并附上代码片段。

1)在输入框中输入一些值
2)通过标记或单击屏幕上的其他位置来失去焦点
3)它工作正常并且函数 triggerOnBlur 被调用
4)现在再次在输入框中输入一些值
5)立即点击保存按钮,无需单击其他任何地方
6) 函数 triggerOnBlur 被调用,但为了单击保存按钮,我需要单击保存。

我想一键搞定。。

 <!DOCTYPE html>
<html>
<head>
<script>
function triggerOnBlur()
{
alert("onblur event triggered");
}

function triggerSaveButton()
{
alert("save button");
}
</script>
</head>
<body>

<form>
<input type = "text" onblur = "triggerOnBlur()" />
<input type = "submit" value = "Save" onclick = "triggerSaveButton()" />
</form>
</body>
</html> 
4

2 回答 2

1

你总是可以做类似的事情:

function triggerSaveButton()
{
    var inputs = document.getElementsByTagName("input"), input = null;
    for(var i = 0, len = inputs.length; i < len; i++) {
        input = inputs[i];
        if(input.type == "text" && input == document.activeElement) {
            input.blur();
        }
    }
    // onblur triggered, now continue with function
    alert("save button");
}
于 2013-04-16T07:16:47.310 回答
1

因为你alert()打破click事件,click event需要你在按钮上释放鼠标键,如果你必须使用alert(),你可以使用onmousedown事件,看这个例子

http://jsfiddle.net/3w8VM/

于 2013-04-16T09:00:30.947 回答