Jquery序列化和serializeArray不适用于谷歌浏览器

时间:2011-11-17 12:20:36

标签: jquery html ajax

我有以下html。

<fieldset id="fieldset-step_3">   
       <input type="text" value="2" id="rule_form-lead_time" name="rule_form[lead_time]"> 
       <select class="w50" id="rule_form-operator" name="rule_form[operator]">
            <option label="&lt;" value="&lt;">&lt;</option>
            <option selected="selected" label="&gt;" value="&gt;">&gt;</option>
       </select>
       <button type="button" id="next" name="next">Next</button>
</fieldset>

单击下一步按钮时,我使用以下jquery代码获取值。

   $('#next').click(function () {
        var values = $('#fieldset-step_3').serialize();
        alert(values);          
   });

此代码适用于firefox 8和opera 11.60 beta。但它不适用于谷歌Chrome 15.0.874.121。

请帮帮我。给我一个从jquery获取字段设置值的想法。

4 个答案:

答案 0 :(得分:2)

你似乎找到了一个bug。我在Chrome 11中试过这个并看到了同样的事情。如果我序列化表单,它的工作原理。如果我序列化单个表单元素,它可以工作。如果我尝试序列化包含所有表单元素的div或字段集标记,则不会。

答案 1 :(得分:1)

这是一种非常简单的方法,但可以完成工作,你可以按照自己想要的方式自定义它。

parseField = function( $object ){
  result = new Array();
  $object.find('select[value!=""], input[value!=""]').each(function(){
    var obj = {};
    obj.key = $(this).attr('name');
    obj.val = $(this).val();
    result.push( obj );
  });
  return result;
}

您可以像以下一样使用它:

var values = parseField( $('#fieldset-step_3') );
$.each(values, function(i,obj){
  alert( 'My key is: ' + obj.key + ' and my value: ' + obj.val );
});

答案 2 :(得分:1)

我今天碰到了这个。 $( '#formid')序列化()。与Firefox一起工作正常,但铬没有出现。 经过一些测试,这是我的答案:

在chrome中,表单名称和id必须相同才能使序列化工作。

答案 3 :(得分:0)

mmm尝试添加

<input type="text" value="2" id="rule_form-lead_time" name="rule_form[lead_time]" />

而不是

<input type="text" value="2" id="rule_form-lead_time" name="rule_form[lead_time]">

验证时我找到了

end tag for "input" omitted, but OMITTAG NO was specified

…ut type="text" value="2" id="rule_form-lead_time" name="rule_form[lead_time]"> 


You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">".