2011-10-22 44 views
6

我有这样的代码:奇怪的行为 - 连载

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); 

现在,当我提出:

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

例如,如果我选择值1/8被发送至1,或9/1为16

我要的是送分数值,即显示在输入框中,但正如我所说的,没有被发送到insert.php

任何想法?谢谢

+0

尝试'变种尺寸= [ “1 \/9”, “1 \/8”, “1 \/7”];' – Rafay

+3

@ 3nigma:我不那这将解决问题。 '/'通常不需要被转义。根据OP的描述,如果“1/8”作为1发送,“9/1”作为16发送,那听起来数组索引被发送。 – darioo

+0

@darioo你是对的我没有阅读'9/1'作为16部分... – Rafay

回答

3

在滑块初始化期间,将创建一个<input type="hidden" name="input0" ... />
使用滑块后,此input获取当前滑块值(0sizes.length - 1之间的数字)。 onChange使用名为sizes的数组中的值设置另一个html输入标记。
提交serializeArray()时,将获取具有name属性的所有输入字段的值。
在我的EXAMPLE中,我给出了将在onChange a name属性上填充的输入字段,因此序列化将同时采用这两个值。

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

谢谢scessor。真的很好的解释。 –