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

Is it possible to get the element id of the object clicked when using onblur for input evaluation?

本文关键字:单击 对象 id 元素 是否 onblur 评估 输入      更新时间:2023-09-26

我使用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>

我建议在模糊后100毫秒进行验证检查,如果要运行以下内容,将检查标志:

<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);
}