我使用serializeArray()
方法将HTML表单作为JS对象获取。当表单具有带“多个”选项的选择控件但未选择任何选项时,该对象不会被序列化。
以下是一个示例:https://fiddle.jshell.net/tfzxmr9d/1/
当它有一个或多个值时,它会工作。它应该返回一个具有控件名称和空值或空值的对象。它是否按预期工作?
答案 0 :(得分:0)
这是预期的,没有有效的结果。要更改此行为,请在字段初始化后立即添加此行:
fields = fields || [{name: 'multiple', value: 'Null'}];
答案 1 :(得分:0)
您似乎忘记了$(function(){});
准备语法。您的代码可能看起来像那样。因为你的案例中的jQuery可能还没准备好。
$(function(){
function showValues() {
var fields = $( ":input" ).serializeArray();
$( "#results" ).empty();
jQuery.each( fields, function( i, field ) {
$( "#results" ).append( field.name + ": " + field.value + "<br>" );
});
}
$( ":checkbox, :radio" ).click( showValues );
$( "select" ).change( showValues );
showValues();
});
答案 2 :(得分:0)
if(!fields.some(function(element){return element.name === "multiple"})){
fields.push({name: 'multiple', value: 'Null'});
}
https://fiddle.jshell.net/tfzxmr9d/2/我无法想办法检查整个数组的“倍数”,以便你去。
但您应该修改服务器端代码以接受默认输出,因为这是HTML表单序列化的正常方式。