jQuery没有序列化文本输入,尽管它已经填满了

时间:2017-02-10 10:06:21

标签: javascript jquery serialization

我有以下

<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"

为什么在我想过滤掉空的时候它不会序列化?

1 个答案:

答案 0 :(得分:2)

我找到了很多使用你代码的答案。有人说它有效,有些人说不是。

请尝试使用此代码,它应该适用于任何jQuery版本:

var str = $("#formie").find(":input").filter(function () 
{
    return $.trim(this.value).length > 0;
}).serialize();