在我的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。:项目树中这个文件的直接链接在这里:
更新
到目前为止我所尝试的内容除了上面提到的内容外,还是无法完成这项工作:
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>
的内容发送到服务器。