2011-10-22 5 views
6

ho questo codice:strano comportamento - serializzare

var sizes = ["1/9","1/8","1/7","1/6","1/5","1/4","1/3","1/2","1/1","2/1","3/1","4/1","5/1","6/1","7/1","8/1","9/1"]; 

      var slider = new dijit.form.HorizontalSlider({ 
       value:8, 
       name:"value"+[i], 
       slideDuration:0, 
       onChange:function(val){ 
        dojo.byId('value'+[i]).value = sizes[val]; 
        }, 
       minimum:0, 
       maximum:sizes.length-1, 
       discreteValues:sizes.length, 
       intermediateChanges:"true", 
      },node); 

ora, quando ho fatto:

$("#custom").submit(function() { 
     var formdata = $("#custom").serializeArray(); 
     $.ajax({ 
      url: "insert.php", 
      type: "post", 
      dataType: "json", 
      data: formdata, 
      success: function(data) { 
} 
}); 

Per esempio, se scelgo il valore 1/8 viene inviato come 1, o 9/1 come 16.

quello che voglio è inviare il valore frazione, che viene mostrato nella casella di input, ma come ho detto, non è inviato al insert.php

Qualche idea? grazie

+0

provare 'formati var = [ "1 \/9", "1 \/8", "1 \/7"];' – Rafay

+3

@ 3nigma: Non che fanno questo risolverà il problema. '/' di solito non ha bisogno di essere sfuggito. Dalla descrizione dell'OP, se "1/8" viene inviato come 1 e "9/1" come 16, mi sembra che invece venga inviato l'indice di array. – darioo

+0

@darioo hai ragione non ho letto il '9/1' come 16 parti ... – Rafay

risposta

3

All'inizio durante l'avvio del cursore verrà creato uno <input type="hidden" name="input0" ... />.
Dopo aver utilizzato il dispositivo di scorrimento, questo input ottiene il valore corrente del cursore (un numero compreso tra 0 e sizes.length - 1). Lo onChange imposta un altro tag di input html con il valore dell'array chiamato sizes.
Durante l'invio di serializeArray() assume i valori di tutti i campi di input che hanno un attributo name.
Nel mio EXAMPLE ho dato il campo di input che sarà riempito con l'attributo onChange a name, quindi la serializzazione accetta entrambi i valori.

HTML:

<form action="#" id="custom"> 
    <div id="slider0"></div> 
    <input type="text" id="value0" data-dojo-type="dijit.form.TextBox" name="value0" /> 
    <input type="submit" value="submit" /> 
</form> 
+1

grazie scessor. Davvero una buona spiegazione. –