2013-02-13 1 views
0

Я пытаюсь использовать метод serializeArray Jquery, чтобы создать массив объектов из простой формы (получить данные из формы и кэш будет использовать позже):JQuery serializeArray не работает в Safari

<fieldset class="myFieldset"> 
    <div id="divContainer">   
     <div class="anotherdiv"> 
      <input type="text" name="testBox1" class="aclass" /> 
      <select name="testSel1" class="atestclass"> 
       <option value="car">car</option> 
        <option value="boat">boat</option> 
        <option value="plane">plane</option> 
       </select> 
      </input> 
     </div> 
    </div> 
</fieldset> 
<fieldset class="submit-wrap"> 
     <input type="submit" name="enter" id="enter" value="Enter" > 
</fieldset> 

Я вызова serializeArray по щелчку:

$('#enter').click(function(){  
    var testForm = jQuery('.myFieldset').serializeArray(); 
    alert(testForm); 
}); 

Это прекрасно работает в хроме (http://jsfiddle.net/pCELZ/), но не в Safari. Есть идеи?

// Мои элементы формы не отключены, и я включаю атрибут 'name'. Пробовал различные html ... // Спасибо заранее.

ответ

1

вместо использования fieldset использовать form:

<form class="myFieldset"> 
    <div id="divContainer">   
    <div class="anotherdiv"> 
     <input type="text" name="testBox1" class="aclass" /> 
     <select name="testSel1" class="atestclass"> 
      <option value="car">car</option> 
       <option value="boat">boat</option> 
       <option value="plane">plane</option> 
      </select> 
     </input> 
    </div> 
    </div> 
</form> 

и проверить его здесь: fiddle

+0

Спасибо, Jai, для правильного ответа. Сразу же после написания вопроса, упрощения моего кода и его попыток на jsfiddle, я пришел к такому же выводу. Ответ Darshanags ниже, похоже, тоже работает. Еще раз спасибо... –

0

Jai правильно. Другой способ сделать это - указать элемент, изменив селектор.

$('#enter').click(function(){  
    var testForm = jQuery('.myFieldset :input').serializeArray(); 
    console.log(testForm); 
}); 

Работа скрипку here