簡體   English   中英

表單字段分組數組

[英]Form Field Grouping Array

我正在嘗試使Make / Model / Year表單正常運行...並且雖然UI的一部分運行良好...在檢索結果時我很困惑

字段是這樣生成的:

<div class="input-group">
    <input type="text" placeholder="Vehicle Model for This Make" id="PartVehModel0" name="PartVehModel[Chevy]" class="form-control">
    <span style="cursor:pointer;" onclick="$(this).parent().remove();$('#vYear' + $(this).parent().find('input').val()).remove();" class="input-group-addon"><i class="fa fa-fw fa-minus-square-o"></i></span>
    <span onclick="addChildGroup($(this).parent().find('input'), 2, '#vYear');" style="cursor:pointer;" class="input-group-addon"><i class="fa fa-chevron-right fa-fw"></i></span>
</div>
<div class="input-group">
    <input type="text" placeholder="Vehicle Model for This Make" id="PartVehModel1" name="PartVehModel[Chevy]" class="form-control">
    <span style="cursor:pointer;" onclick="$(this).parent().remove();$('#vYear' + $(this).parent().find('input').val()).remove();" class="input-group-addon"><i class="fa fa-fw fa-minus-square-o"></i></span>
    <span onclick="addChildGroup($(this).parent().find('input'), 2, '#vYear');" style="cursor:pointer;" class="input-group-addon"><i class="fa fa-chevron-right fa-fw"></i></span>
</div>

等等...

當我嘗試執行$_POST['PartVehModel']var_dump ,我只能看到第一個項目,而沒有其他任何東西。 例如:我可以將雪佛蘭,本田作為Makes ... CRV / Civic和Corvette / Malibu分別作為模型,然后每種模型都花了很多年,但我得到的只是:

array(2) {
    [0]=>
    string(5) "Chevy"
    [1]=>
    string(5) "Honda"
}

array(2) {
    ["Honda"]=>
    string(5) "Civic"
    ["Chevy"]=>
    string(6) "Malibu"
}

array(4) {
    ["Civic"]=>
    string(4) "2003"
    ["CRV"]=>
    string(4) "2001"
    ["Malibu"]=>
    string(4) "1990"
    ["Corvette"]=>
    string(4) "1968"
}

從以下形式: 在此處輸入圖片說明

我的JavaScript生產這是:

var $ct = 0;
function addFormField(which, initialEle, val){
var $nField;
$iEle = $(initialEle);
$iEle.find('i').removeClass('fa-plus-square-o');
$iEle.find('i').addClass('fa-minus-square-o');
switch(which){
    case 1: // make
        $iEle.attr('onclick', '$(this).parent().remove();$(\'#vModel\' + $(this).parent().find(\'input\').val()).remove();');
        $nField = '<div class="input-group"><input type="text" class="form-control" name="PartVehMake[]" id="PartVehMake'+$ct+'" placeholder="Vehicle Make for This Part" /><span class="input-group-addon" onclick="addFormField(1, this);" style="cursor:pointer;"><i class="fa fa-plus-square-o fa-fw"></i></span><span class="input-group-addon" style="cursor:pointer;" onclick="addChildGroup(\'#PartVehMake'+$ct+'\', 1, \'#vModel\');"><i class="fa fa-chevron-right fa-fw"></i></span></div>';                     
        $('#vMake').append($nField);
        $ct++;
        break;  
    case 2: // model
        $iEle.attr('onclick', '$(this).parent().remove();$(\'#vYear\' + $(this).parent().find(\'input\').val()).remove();');
        $nField = '<div class="input-group"><input type="text" class="form-control" name="PartVehModel['+val+']" id="PartVehModel'+$ct+'" placeholder="Vehicle Model for This Make" /><span class="input-group-addon" onclick="addFormField(2, this, \'' + val + '\');" style="cursor:pointer;"><i class="fa fa-plus-square-o fa-fw"></i></span><span class="input-group-addon" style="cursor:pointer;" onclick="addChildGroup($(this).parent().find(\'input\'), 2, \'#vYear\');"><i class="fa fa-chevron-right fa-fw"></i></span></div>';                     
        $('#' + $iEle.parent().parent().attr('id')).append($nField);
        $ct++;
        break;  
    case 3: // year
        $iEle.attr('onclick', '$(this).parent().remove();');
        $nField = '<div class="input-group"><input type="text" class="form-control" name="PartVehYear['+val+']" id="PartVehYear'+$ct+'" placeholder="Vehicle Year for This Model" /><span class="input-group-addon" onclick="addFormField(3, this, \'' + val + '\');" style="cursor:pointer;"><i class="fa fa-plus-square-o fa-fw"></i></span></div>';                     
        $('#' + $iEle.parent().parent().attr('id')).append($nField);
        $ct++;
        break;
}
}
var $ct1 = 0;
function addChildGroup(val, which, where){
var $val = $(val).val();
var $whr = $(where);
var $nField;
if($val.length > 0){
    switch(which){
        case 1: //model
            $whrID = where.replace('#', '') + $val;
            $nField = '<div class="input-group"><input type="text" class="form-control" name="PartVehModel[' + $val + ']" id="PartVehModel'+$ct1+'" placeholder="Vehicle Model for This Make" /><span class="input-group-addon" onclick="addFormField(2, this, \'' + $val + '\');" style="cursor:pointer;"><i class="fa fa-plus-square-o fa-fw"></i></span><span class="input-group-addon" style="cursor:pointer;" onclick="addChildGroup($(this).parent().find(\'input\'), 2, \'#vYear\');"><i class="fa fa-chevron-right fa-fw"></i></span></div>';                     
            $whr.append('<div id="' + $whrID + '"><h5 style="margin-top:10px;">' + $val + '<span class="fa fa-minus pull-right" style="cursor:pointer;" onclick="$(\'#' + $whrID + '\').remove();"></span></h5>' + $nField + '</div>');
            $ct1++;
            break;
        case 2: //year
            $whrID = where.replace('#', '') + $val;
            $nField = '<div class="input-group"><input type="text" class="form-control" name="PartVehYear[' + $val + ']" id="PartVehYear'+$ct1+'" placeholder="Vehicle Year for This Model" /><span class="input-group-addon" onclick="addFormField(3, this, \'' + $val + '\');" style="cursor:pointer;"><i class="fa fa-plus-square-o fa-fw"></i></span></div>';                     
            $whr.append('<div id="' + $whrID + '"><h5 style="margin-top:10px;">' + $val + '<span class="fa fa-minus pull-right" style="cursor:pointer;" onclick="$(\'#' + $whrID + '\').remove();"></span></h5>' + $nField + '</div>');
            $ct1++;
            break;  
    }
}
}

因此,如何使“分組”工作正常?

您需要在表單中使用數組語法:

name="PartVehModel[Chevy][]"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM