Простая форма проверки сценария


Это простая форма проверки сценария.

Я бы хотел:

  • улучшение проверки jQuery
  • упростить код jQuery

Вопросы:

  1. Я должен быть экспорт чистом JavaScript проверки, чтобы избежать потенциальных конфликтов с другими библиотеками, которые пользователи могли установить?
  2. Стоит ли это усилий или я должен придерживаться мой код jQuery?
  3. Есть ли способ, чтобы уменьшить вероятность конфликта с Код jQuery без необходимости доработки его с JS?

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
$(document).ready(function() {

// when submit button is pressed
$("#form_name").submit(function() {

    var pass = true;

    var errors = {
        required    : 'this field is required',
        email       : 'enter a valid email address',
        numeric     : 'enter a number without spaces, dots or commas',
        alpha       : 'this field accepts only letters &amp; spaces'
    };

    var tests = {
        email       : /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
        numeric     : /^[0-9]+$/,
        alpha       : /^[a-zA-Z ]+$/
    };

    // clear error messages
    $(".error").removeClass();
    $(".error-message").remove();

    function displayError(el, type) {
        $(el).parent().addClass("error").find('label').append('<span class=\"error-message\"> &#8211; ' + errors[type] + '</span>');
    }

    $('.required, .email, .numeric, .alpha').each(function(){
        var value       = $(this).val();
        var valueExists = value.length === 0 ? false : true;

        var required    = $(this).hasClass('required');
        var email       = $(this).hasClass('email');
        var numeric     = $(this).hasClass('numeric');
        var alpha       = $(this).hasClass('alpha');

        if (required && value.length===0) {
            displayError(this,'required');
            pass=false;
        }

        else if (email && valueExists && !tests.email.test(value)) {
            displayError(this,'email');
            pass=false;
        }

        else if (numeric && valueExists && !tests.numeric.test(value)) {
            displayError(this,'numeric');
            pass=false;
        }

        else if (alpha && valueExists && !tests.alpha.test(value)) {
            displayError(this,'alpha');
            pass=false;
        }
    });

    return pass;
});
});
/*]]>*/
</script>


836
5
задан 9 ноября 2011 в 07:11 Источник Поделиться
Комментарии
2 ответа

Чтобы избежать конфликтов с другими библиотеками, обернуть ваш код с помощью функции jQuery, а также вызова в jQuery.noConflict();

Единственный конфликт может быть, если кто-то другой импортированный объект с именем jQuery в глобальном пространстве имен.

Ссылка: http://docs.jquery.com/Using_jQuery_with_Other_Libraries

Пример:

jQuery.noConflict();
jQuery(document).ready(function($){
//This is a jQuery function
$('.myClass');
});

11
ответ дан 9 ноября 2011 в 09:11 Источник Поделиться

Для защиты от конфликтующих библиотек обернуть ваш код в сразу же вызывается функция выражения

(function ($, undefined) {
$(document).ready(function() {
// ...
});
} (jQuery.noConflict()));

3
ответ дан 10 ноября 2011 в 07:11 Источник Поделиться