我知道我们可以通过选择器
手动记录任何输入值console.log('inputName='+$('#inputId').val()+'....)
但是,是否有-simpler-记录所有输入值的方法?如果任何输入发生变化,它是否可行
答案 0 :(得分:12)
您可以使用serialize
将表单元素序列化为字符串以进行日志记录。它遵循与包括或不包括正常表单提交的元素相同的规则。唯一需要注意的是input type="file"
字段的内容未被序列化,原因可能是显而易见的原因。
当任何输入发生变化时触发它:
$("form :input").change(function() {
console.log($(this).closest('form').serialize());
});
Live demo使用文档中显示的表单
答案 1 :(得分:1)
您可以使用$("form").serialize()
以查询字符串的形式获取。
答案 2 :(得分:1)
每次发生任何变化时都会记录表单:
$("form :input").change(function(){
console.log($("form").serialize());
});
修改强>
删除了我的焦点建议,因为我意识到实际上只有在元素失去焦点时才会触发更改。
答案 3 :(得分:1)
我做了这个小组件:
$("form :input").change(function() {
var fields = $(this).closest('form').serialize();
serialize_to_console( fields );
});
/*
SERIALIZE TO CONSOLE
Transforms string to array and show each param in console if not empty */
var serialize_to_console = function( serialized ) {
var splited_serialized = serialized.split('&');
$.each( splited_serialized, function(index, key) {
var input = key.substr(0, key.indexOf('='));
var value = key.substr( key.indexOf('=') + 1 );
if( value !== '' )
console.log( '[' + input + '] = \'' + value + '\'' );
});
}
享受!