вернуть false в случае, если заявление не распознается в IE - Jquery - PullRequest
0 голосов
/ 27 марта 2011

Следующий код проверяет, ввел ли пользователь свой адрес электронной почты и пароль.

Это прекрасно работает в Firefox / Chrome, но у меня возникают проблемы в IE.В IE, когда вы не вводите свое имя пользователя и пароль, он окрашивает поля в красный цвет (как и ожидалось), а также не меняет текст на «Загрузка ...», поэтому он возвращается к значению false впоследнее утверждение, но IE по какой-то причине его не распознает - есть ли обходной путь, о котором я должен знать?

$('#gettheiremail').submit( function() { 
    var passwordinfo = $('#passwordtextbox').val();
    if ($('#signuptextbox').attr('value') == '' || $('#signuptextbox').attr('value') == 'Your Email Address' ) {
        $('#signuptextbox').css('color','red');
        $('#signuptextbox').css('border','3px solid #ff0000');
    }
    if ($('#passwordtextbox').attr('value') == '') {
        $('#fakepassword').css('color','red');
        $('#fakepassword').css('border','3px solid #ff0000');
        $('#passwordtextbox').css('border','3px solid #ff00000');
    }
    if((!($('#signuptextbox').attr('value') == '' || $('#signuptextbox').attr('value') == 'Your Email Address' )) && $('#passwordtextbox').attr('value') != '' )
    {
        $('#sendform').val('Loading...');       
    }
    else
    {
        return false;       
    }
});

Вот рабочий код после исправлений

$('#gettheiremail').submit( function(e) { 
    var signuptextbox = $('#signuptextbox').attr('value');
    if (signuptextbox == 'Your Email Address' ) {
        $('#signuptextbox').css('color','red');
        $('#signuptextbox').css('border','3px solid #ff0000');
        e.preventDefault();     
    }
    var passwordtextbox = $('#passwordtextbox').attr('value');
      if (passwordtextbox == '' || passwordtextbox == 'Enter Your Email Password') {
        $('#fakepassword').css('color','red');
        $('#fakepassword').css('border','3px solid #ff0000');
        $('#passwordtextbox').css('border','3px solid #ff00000');
        e.preventDefault();
    }
    if(!((passwordtextbox == '' || passwordtextbox == 'Enter Your Email Password') && (signuptextbox == 'Your Email Address')))
    {
            $('#sendform').val('Loading...');           

    }

});

Ответы [ 2 ]

1 голос
/ 27 марта 2011

Если ни одна из двух вещей в конце вашего кода не происходит, то есть вероятность, что вы никогда не достигнете конца этого кода & mdash; например, что исключение бросается посередине. Вам может понадобиться отладчик (вы можете использовать встроенные средства в IE8 + или VS.Net [есть бесплатная версия] для более ранних версий).


Не по теме : Вы повторяете много поисков:

if ($('#signuptextbox').attr('value') == '' || $('#signuptextbox').attr('value') == ' ...

Каждый раз, когда вы пишете $('#xyz'), он запускает несколько вызовов функций, по крайней мере, одно выделение памяти, и вызывает поиск DOM (который не всегда такой быстрый, даже если поиск выполняется id ). Точно так же постоянный повторный вызов attr для одного и того же атрибута приводит к ненужным накладным расходам (хотя и не так уж много). Вместо этого:

var signuptextbox = $('#signuptextbox'),
    signupvalue   = signupvalue = signuptextbox.attr('value');
if (signupvalue == '' || signupvalue == '...

(Или не сохраняйте signuptextbox, если вам просто нужно его значение.)

1 голос
/ 27 марта 2011

Вы пробовали:

$('#gettheiremail').submit(function(e) { 
   /* Other code */
   e.preventDefault();
   /* Other code */
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...