2011-06-06 149 views
0

我有兩個JavaScript函數,第一個工作,第二個工作,但沒有在隱藏的輸入中回顯正確的值。拆分數組

伊夫設法得到最後的隱藏的輸入值正確的,但我不知道

var customTicketsArr = Array(); 

function EditEventAddTicket(){ 
    alertWrongTime = false; 
    var TicketName = jQuery("#ticketname").val(); 
    var TicketPrice = jQuery("#ticketprice").val(); 
    var ticketquantity = jQuery("#ticketquantity").val(); 

    var storeString = "TicketName" + TicketName + "TicketPrice" + TicketPrice + "Quantity" + ticketquantity + ''; 
    customTicketsArr.push(storeString); 
    EditEventUpdateTickets(true); 
} 


function EditEventUpdateTickets(fade){ 
    jQuery("#custom_tickets_string").val(customTicketsArr); 
    var output = ""; 
    var style = ""; 
    for (i = customTicketsArr.length-1; i >= 0; i--){ 
     ticketname = customTicketsArr[i].split("TicketName"); 

      ticketprice = customTicketsArr[i].split("TicketPrice"); 

      ticketquantity = customTicketsArr[i].split("Quantity"); 
     if(fade){ 
      if (customTicketsArr.length - 1 == i){ 
       style = "display: none; "; 
       var fadeInDiv = i; 
      } else { 
       style = ""; 
      } 
     } 
     if (i % 2 == 1) { style += "background-color: #660000; "} 
     html = "<div id='customticket" + i + "' class='customeventbase' style='" + style + "'>"; 
     html += '<input type="hidden" name="customTicketid[' + i + '][Name]" id="customticketName' + i + '" value="'+ ticketname + '" />'; 
      html += '<input type="hidden" name="customTicketid[' + i + '][Price]" id="customticketPrice' + i + '" value="' +ticketprice[1] +'" />'; 
      html += '<input type="hidden" name="customTicketid[' + i + '][Quantity]" id="customticketQuantity' + i + '" value="'+ ticketquantity[1] +'" />'; 

     html += '<button class="customeventdel" type="button" onClick="EditEventRemoveDate(' + i + ')"></button>'; 
     html += '<div class="clear"></div>'; 
     html += '</div>\n'; 

     output += html; 
    } 
    output += "<input type='hidden' id='custom_ticket_info' name='custom_ticket_info' value='" + customTicketsArr + "' />"; 
    jQuery("#custom_ticket_container").html(output); 
    if(fade){ 
     setTimeout("EditEventfadeInDiv(" + fadeInDiv +")", 10); 
    } 

} 

這個輸出如何:

<div style="background-color: #660000; " class="customeventbase" id="customticket1"> 
<input type="hidden" value=",testTicketPrice50Quantity44" id="customticketName1" name="customTicketid[1][Name]"> 
<input type="hidden" value="undefined" id="customticketPrice1" name="customTicketid[1][Price]"> 
<input type="hidden" value="44" id="customticketQuantity1" name="customTicketid[1][Quantity]"> 
<button onclick="EditEventRemoveDate(1)" type="button" class="customeventdel"></button> 
<div class="clear"></div></div> 

值前兩個隱藏字段是不正確的

+0

拋開代碼,你能解釋一下你試圖達到的目標嗎? – 2011-06-06 16:32:55

回答

2

爲什麼你將它保存爲一個字符串?我建議將其存儲在一個對象:

function EditEventAddTicket(){ 
    alertWrongTime = false; 
    var TicketName = jQuery("#ticketname").val(); 
    var TicketPrice = jQuery("#ticketprice").val(); 
    var ticketquantity = jQuery("#ticketquantity").val(); 

    var ticket = {"TicketName": TicketName, "TicketPrice": TicketPrice, "Quantity": ticketquantity}; 
    customTicketsArr.push(ticket); 
    EditEventUpdateTickets(true); 
} 

,然後你可以簡單地加載數據:

for (i = customTicketsArr.length-1; i >= 0; i--){ 
     ticketname = customTicketsArr[i].TicketName; 
     ticketprice = customTicketsArr[i].TicketPrice; 
     ticketquantity = customTicketsArr[i].Quantity; 

     // ... 
} 
3

它們不是不正確的值 - split()正在做它應該做的 - 在刪除分隔符後返回一個子字符串數組。

使用你的字符串結構,拆分TicketName會給你兩個字符串 - 分隔符之前的子字符串和之後的子字符串 - TicketName本身不包括在內。

因此,對於字符串"TicketNametestTicketPrice50Quantity44",當您在"TicketName"上拆分時,將獲得"""testTicketPrice50Quantity44"。在TicketPrice上拆分相同的字符串會給你"TicketNametest""50Quantity44"

我建議把對象放入數組,而不是 -

var storeObject = { 
        "TicketName" : TicketName, 
        "TicketPrice" : TicketPrice, 
        "Quantity" : ticketquantity 
        }; 
customTicketsArr.push(storeObject); 

然後,您可以取回數據:

for (i = customTicketsArr.length-1; i >= 0; i--){ 
    var currentObject = customTicketsArr[i]; 

    var ticketname = currentObject.TicketName; 
    var ticketprice = currentObject.TicketPrice; 
    var ticketquantity = currentObject.Quantity; 

    //do other stuff here 
} 
1

爲什麼不只是做一個二維數組?

var customTicketsArr = Array(); 

function EditEventAddTicket() { 
    customTicketsArr.push({ 
     'name' : jQuery("#ticketname").val(), 
     'price' : jQuery("#ticketprice").val(), 
     'qty' : jQuery("#ticketquantity").val() 
    }); 
}