我如何在console.log中如何发送#form值?

时间:2011-12-16 09:30:23

标签: javascript jquery forms

我知道我们可以通过选择器

手动记录任何输入值
console.log('inputName='+$('#inputId').val()+'....)

但是,是否有-simpler-记录所有输入值的方法?如果任何输入发生变化,它是否可行

4 个答案:

答案 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 + '\'' );
    });

}

享受!