jquery脚本不在spring项目中工作

时间:2014-06-01 21:19:12

标签: jquery spring spring-mvc

在我的spring项目中,我使用jquery事件处理程序添加了四个* .js文件,用于在我的项目上执行多个活动。其中一个是这个脚本,放在文件form_validation.js:

的jsfiddle http://jsfiddle.net/klebermo/f8U4c/79/

$('.valida').each(function(){

    $(this).on('focus', function(e){
        regex = $(this).attr('pattern');

        counter = 0;
        tam = size_of(regex);
        str = generate_string(regex, tam);

        $(this).val(str);
    });

    $(this).on('keypress', function(e){
        e.preventDefault();

        var tecla = e.which;
        var tecla2;

        if(tecla >= 48 && tecla <= 57)
            tecla2 = tecla - 48;
        else
            tecla2 = String.fromCharCode(tecla);

        result = $("<div>");
        result.append( "tecla = "+tecla+"<br>" );

        var t = type_of(regex, counter);

        if(counter < tam) {
            if(t != 'number' && t != 'string') {
                str = replaceAt(str, counter, t);
                counter++;
            }

            t = type_of(regex, counter);

            if(typeof tecla2 == t) {
                result.append( "tecla2 = "+tecla2+"<br>" );
                str = replaceAt(str, counter, tecla2);
                counter++;
            }
        }

        result.append( "counter = "+counter+"<br>" );
        $("#result").empty().append(result);

        $(this).val(str);
    });

});

当我运行我的应用程序并打开一个带有'valida'类字段的页面时,它是唯一不起作用的。在我的项目中,我更改了代码:

$(document).find('.valida').each(function(e){
    $(this).on('focus', '.valida', function(e){
        regex = $(this).attr('pattern');

        counter = 0;
        tam = size_of(regex);
        str = generate_string(regex, tam);

        $(this).val(str);
    });

    $(this).on('keypress', '.valida', function(e){
        e.preventDefault();

        var tecla = e.which;
        var tecla2;

        if(tecla >= 48 && tecla <= 57)
            tecla2 = tecla - 48;
        else
            tecla2 = String.fromCharCode(tecla);

        var t = type_of(regex, counter);

        if(counter < tam) {
            if(t != 'number' && t != 'string') {
                str = replaceAt(str, counter, t);
                counter++;
            }

            t = type_of(regex, counter);

            if(typeof tecla2 == t) {
                str = replaceAt(str, counter, tecla2);
                counter++;
            }
        }

        $(this).val(str);
    });
});

任何人都知道为什么这段代码在我的项目中不起作用?

ps。:项目树中这个文件的直接链接在这里:

https://github.com/klebermo/lojavirtual/tree/master/src/main/webapp/WEB-INF/view/jsp/resources/extras/js

更新

到目前为止我所尝试的内容除了上面提到的内容外,还是无法完成这项工作:

1)在任何包装器

之外使用$(document).on()

2)在$(document).find('。valida')中使用$(document).on()。each()

3)在$(document).ready()

中使用$(document).on()

我真的无法弄清楚这里发生了什么。

更新2

我需要添加一个有问题的脚本。下面的代码工作得很好,除了突出显示的部分:

$(document).on('submit', '.form', function (event) {
    event.preventDefault();

    var $form = $( this ),
    url = $form.attr( "action" );

    if($("select.lista").length) {
        jQuery('select.lista').find('option.item').each(function(){
            $(this).attr('selected', 'selected');
        });
    }

    var posting = $.post( url, $(this).serialize() );
    posting.done(function( data ) {
        $("#"+data).css("display", "block");

        if($("#pergunta").is(":visible"))
            $("#pergunta").css("display", "none");

        $(".form").each (function(){
            this.reset();
        });
    });
});

**     if($(“select.lista”)。length){         jQuery的( 'select.lista')。找到( 'option.item')。每个(函数(){             $(this).attr('selected','selected');         });     } **

我需要这段代码才能在提交表单时将<select>的内容发送到服务器。

0 个答案:

没有答案