jquery脚本不是在我的spring项目中执行的

时间:2014-06-03 10:23:00

标签: javascript jquery spring jsp

在我的spring项目中,我有一个页面dashboard.jsp(基于此example),我加载了所有的css和js文件,并且我也加载了所有其他jsp文件 - 我使用了$.get()$.ajax()并将其内容加载到以下结构中:

<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
    <div id="content" class="panel panel-warning" style="display: none;">
      <div class="panel-heading">
        <h3 id="titulo" class="panel-title"></h3>
      </div>
      <div id="conteudo" class="panel-body">
      </div>
    </div>
</div>

这是由一个名为page_link.js的脚本完成的,该脚本具有以下功能:

function open(url) {
    $.ajax({
        type: "GET",
        url: url
    }).done(function( data ) {
        var $temp  = $('<div/>', {html:data});
        var titulo = $temp.find('title').text();
        var conteudo = $temp.remove('head').html();
        $("#titulo").empty();
        $("#conteudo").empty();
        $("#titulo").text(titulo);
        $("#conteudo").html(conteudo);
        $("#content").show();
    });
}

function open_dialog(url, dialog_div) {
    $.ajax({
        type: "GET",
        url: url
    }).done(function(data){
        var $temp  = $('<div/>', {html:data});
        var text = $(dialog_div).find('#text');
        $( dialog_div ).dialog({ title: $temp.find('title').text() });
        $( text ).html($temp.remove('head').html());
        $( dialog_div ).dialog({ height: 720 });
        $( dialog_div ).dialog({ width: 720 });
        $( dialog_div ).dialog( "open" );
    });
}

$(document).on('click', '.link', function (event) {
    event.preventDefault();
    var action = $(this).data('action');
    open(action);
});

$(document).on('click', '.popup', function (event) {
    event.preventDefault();
    var action = $(this).data('action');
    var target = $(this).data('target');
    var div = $("#"+target);
    open_dialog(action, div);
});

$(document).on('click', '.pagina', function(event){
    event.preventDefault();
    var link = $(this).attr('href');
    open(link);
});

我有一些需要提交给服务器的表单的页面(所有通过方法POST),这是由一个名为form_submit.js的脚本完成的,代码如下:

$(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();
        });
    });
});

这两个脚本工作正常(除了第二部分的一小部分,解释here)。但是第三个,我在某些领域(有类&#39; valida&#39;)的验证,在我需要的时候不起作用:

var counter;
var tam;
var str;
var regex;

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

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

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

$(document).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);
});

我无法弄清楚最后一个脚本无法正常工作的原因,因为我基本上使用了与其他两个脚本相同的结构。任何人都可以找到这个问题的动机吗?

0 个答案:

没有答案