In Safari, using jQuery a Form Input Text Field does not receive focus after alert is displayed. Why

Posted by Rob on Stack Overflow See other posts from Stack Overflow or by Rob
Published on 2010-05-13T14:21:14Z Indexed on 2010/05/13 14:24 UTC
Read the original article Hit count: 164

Filed under:
|
|

I have an ASPX web form. I use jQuery to simply my Javascript. I use a Javascript validation script to validate each of the form fields' values. If an error occurs, I popup an alert with an error message. Then I transfer focus to the underlying element.

Here are examples I have tried.

Using jQuery:

var Form_FieldDef = function(name) {
    this.name = name;
    this.SetFocus = function() {
        $('#' + this.name)[0].focus();
    }
    this.Validate = function() {
        var isvalid = true;
        if ( $.trim($('#' + this.name).val()) == '') {
            alert("Your entry is empty");
            this.SetFocus();
            isvalid = false;
        }
        return isvalid;
    }
}

This works on IE7, IE8, Opera, Chrome, and Firefox. It does not work on Safari 4 on PC. I don't have a Mac.

So I changed the SetFocus method to this.

this.SetFocus = function() {
    var fld = document.getElementById(this.name);
    if (fld != null)
        fld.focus();
}

This works on IE7, IE8, Opera, Chrome, and Firefox. It does not work on Safari 4 on PC.

I stepped through the code with VS 2008 debugger, and I'm calling the focus method on the underlying element.

© Stack Overflow or respective owner

Related posts about jQuery

Related posts about JavaScript