我有以下
<form id="formie">
<label class="block-label form-inline" id="color">
<input type="radio" name="color" value="custom">
Custom (<a href="http://www.ralcolor.com/" target="_blank">RAL Colors</a>)
</label>
<input type="text" class="form-control" id="custom_color" name="custom_color" value="" onChange="select_color(this)" placeholder="RAL code">
</form>
(onChange(select_color(this))
对此问题没有任何作用,如果删除它,它仍然是相同的)
和代码
$('#formie').change(function(){
str = $('#formie :input[value!=""]').serialize();
alert($('#custom_color').val());
});
如果用户点击广播,则会触发.change()
事件和str = "color=custom"
,警报为空。如果用户填写文本字段,则会再次触发事件,但str
值仍然相同(文本字段的值未被序列化),警告说明字段中填写的内容正确。
如果我从文本字段标记中删除value=""
,则文本字段始终会被序列化 - 只需单击单选按钮str = "color=custom&custom_color="
即可。如果你然后填写某些内容,它会被正确序列化,例如。 str = "color=custom&custom_color=kek"
。
为什么在我想过滤掉空的时候它不会序列化?
答案 0 :(得分:2)
我找到了很多使用你代码的答案。有人说它有效,有些人说不是。
请尝试使用此代码,它应该适用于任何jQuery版本:
var str = $("#formie").find(":input").filter(function ()
{
return $.trim(this.value).length > 0;
}).serialize();