使用onblur进行输入评估时,是否可以单击对象的元素id?

时间:2015-03-02 19:58:01

标签: javascript jquery html

我正在使用onblur来验证表单输入,但这会强制用户输入内容以逃避字段。如果他们打算坚持下去,这很好,但如果他们需要重新开始或取消,它会阻止他们重置表单。从理论上讲,我想要一个简单的if语句来确定点击的输入是否是重置/取消按钮,但是当我使用onblur时,我无法判断onclick是否会注册 - 这似乎有效关注最后一个领域。

如果有必要,我会使用jQuery,但我认为应该有一个简单的JS解决方案,我无法从我的垃圾压缩器中取出内存。

以下是代码:

function checkRequiredEntry(fieldValue,fieldId,error) {
    var field = fieldId;
    if (fieldValue.length == 0) {
        alert(error);
        field.value = "";
        field.focus();
        error = "";
        return false;
        }
    if (fieldValue.length > 0) {
        if (field.id == "zip" || field.id == "phone") {
            checkNumberFormat(fieldValue,fieldId);
        } 
        if (field.id == "email") {
            checkEmailFormat(fieldValue,fieldId);
        }   
    }
}

...以及html的示例:

        <textarea rows="5" cols="61" name="message" id="message" onblur="return checkRequiredEntry(this.value,document.getElementById('message'),'A brief comment or question is required to validate your form submission. Thank you.');" style="padding:0;"></textarea>

1 个答案:

答案 0 :(得分:0)

我建议验证检查将在模糊后100 mili进行,并检查标志是否运行如下:

<input ... onblur="validate()">
<button onclick="resetInput()"></button>

var flag = true;

function validate() {
    setTimeout(function() {
        if (flag) { // do validation or anything}
    }, 100);
}

function resetInput() {
    flag = false;
    //do what you want to do
   setTimeout(function() {
        flag=true;
    }, 200);
}