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