2011-06-06 122 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() 
    }); 
}