收藏
回答

函数中获取动态创建的30个input的值

因为需要30个input ,所以是用wx:for 来创建的,input的name='shuru{{index}}',都是存在form里的,点击提交按钮后,要如何才能在formSumbit 函数中读取每个input的值呢?


我试着用了以下代码,但是没一个成功的:

第一种:

formSubmit: function (e) {

console.log(e.detail.value)   //这个是能打印成功的,说明form里的数据已经传过来了

    for (var i = 0; i < n; i++) {

console.log(e.detail.value.shuru[1]);    //此时wxml里 input的name='shuru[{{index}}]',打印不出来

console.log(e.detail.value.shuru[i]);       //这句就更不成功了

}

}

第二种:    //此时wxml里 input的name='shuru{{index}}', 跟第一种比,就是把【】去掉了

formSubmit: function (e) {

console.log(e.detail.value)   //这个是能打印成功的,说明form里的数据已经传过来了

    for (var i = 0; i < n; i++) {

var shu=“e.detail.value.shuru”+i;

console.log(shu);       //不成功

console.log(e.detail.value.shuru0);    //这个是可以打印出来的

}

}


回答关注问题邀请回答
收藏

5 个回答

  • 下午茶时间
    下午茶时间
    2018-04-09

     好的,谢谢,我试试看

    2018-04-09
    有用
    回复
  • 神经蛙
    神经蛙
    2018-04-09

    js的数组和Object都是可遍历的,访问方式都可以用 obj[index] 或obj.index的方式,如果index是有效变量名(由字符、数字、_ $构成,且第一个字符不为数字),则两种通用,否则只能用第一种

    2018-04-09
    有用
    回复
  • 神经蛙
    神经蛙
    2018-04-09

    第一种:

    shuru[0]这样的name不是有效变量,不能通过e.detail.value.shuru[0]这样的方式访问,而应该用:e.detail.value['shuru[0]']

    第二种:

    console.log(shu);   你打印的是字符串,而不是该字符串变量对应的值,有效的写法是:e.detail.value['shuru0'] 或 e.detail.value.shuru0

    第三种:既然是完全的一维数组,直接e.detail.value[0]访问即可。

    2018-04-09
    有用
    回复
  • 下午茶时间
    下午茶时间
    2018-04-08

    顶一顶,求助中……

    2018-04-08
    有用
    回复
  • 下午茶时间
    下午茶时间
    2018-04-08

    第三种:    //此时wxml里 input的name='{{index}}',

    formSubmit: function (e) {

    console.log(e.detail.value.0)   //无法打印

    var hxsd=new  Array();

    hxsd=e.detail.value;

    console.log(hxsd) ;    //把e.detail.value赋值给一个数组,然后这个数组是可以打印的(这在三种方法里都能实现),但如果想打                                        印数组的一部分,也是不成功的。

    }

    }

    //我现在怀疑e.detail.value的数据类型到底是什么,以及e.detail.value这些字母又算什么类型,直接写的0,1这些数字算什么类型,  用for 取得循环数字又是什么类型,是不是因为这些类型不同,所以导致系统读不出来。

    2018-04-08
    有用
    回复
登录 后发表内容