Twitter Bootstrap + проблема с проверкой jQuery в IE 9 - PullRequest
0 голосов
/ 12 октября 2011

Я использую Twitter Bootstrap CSS Framework на странице, которая использует модал, чтобы показать окно входа в систему (bootstrap-modal.js). В окне входа в систему я использую действительно простую проверку jquery (jquery.rsv.js) для проверки идентификатора электронной почты и пароля. Проблема в том, что проверка не работает в модальном окне входа в IE 9. На той же странице у меня есть другая форма, которая не находится в модальной форме, и проверка работает отлично.

Ниже приведен мой модальный код начальной загрузки: -

<div id="modal-from-login" class="modal hide fade">
            <div class="modal-header">
              <a href="#" class="close">&times;</a>
              <h3>Login for existing customers</h3>
            </div>
            <div class="modal-body">

    <form id="loginform" name="loginform" method="post" action="login/">

        <div class="clearfix"><label for="comments">Email ID:</label>
            <input type="text" name="email" id="loginemail" /></div>
        <div class="clearfix"><label for="comments">Password:</label>
            <input type="password" name="password" id="loginpassword" />
    </div>
        </div>

    <div class="modal-footer">
        <input type="submit" style="float:left;margin-left:130px;" name="login" id="login" value="Login" class="btn primary" />
    </div>

</form>
    </div>


Это код кнопки: -

<code><button class="btn primary" data-controls-modal="modal-from-login" data-backdrop="true" data-keyboard="true" style="margin-top:5px;">Login</button></code>

Код JavaScript для проверки: -

    
    function my_custom_function()
        {</p>

          if (document.getElementById("website").value){

        var url = document.getElementById("website").value;
        var test = /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url);

        var field = document.getElementById("website");

        if(test){
            return true;
        }else{
         return [[field, "Please enter a valid website."]];
        }
       }else{
        return true;
       }
    }
$(document).ready(function() {

    function loginComplete(){
        return true;
    }   



    $("#loginform").RSV({
          onCompleteHandler: loginComplete,
                rules: [
                        "required,loginemail,Please enter your email id.",
               "valid_email,loginemail,Please enter a valid email address.",
               "required,loginpassword,Please enter your password."
                       ]
        });

});
</script>

Я использую jquery 1.4.2

В чем проблема ?? Этот код прекрасно работает во всех других браузерах, даже в IE8 проблема существует только в IE 9.

1 Ответ

1 голос
/ 08 января 2012

Ваш кодекс ужасен, сводит читателя с ума.

  1. Мое первое предложение заключается в том, что вы сами всегда читаете свой код, для вашего удобства, пожалуйста, отформатируйте его (отступ, соглашение об именах и т. Д.). И согласился с Synchro, я думаю, в jQuery вы должны предпочесть использовать:

    $ ( "# form_id")

    вместо:

    document.getElementById ( "form_id")

  2. Мое второе предложение: проясните вашу проблему. «Проблема в том, что проверка не работает внутри модального поля входа в IE 9». Есть много случаев, чтобы это не сработало. есть ошибка JS? или форма успешно отправлена ​​без проверки поля? Вы смотрели на консоль инструмента разработчика IE9? были ли сообщения об ошибках при отправке формы?

  3. мой третий ... вопрос: я видел, как вы определили пользовательскую функцию с именем: "my_custom_function ()", но вы ее не использовали. см. ваш код:

    Вы должны вставить эту строку кода в массив:

    правила: [ // другие правила проверки ... "Функция, my_custom_function" ]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...