2009-11-16 4 views
1

У меня есть многоступенчатая веб-форма, написанная на C#/asp.net. Я пытаюсь изменить URL-адрес, который отправляется обратно для соображений Google Analytics. Я написал код ниже, чтобы изменить URL-адрес на стороне клиента, но он, похоже, не отправляет URL-адрес с параметрами в конце. Почти так же, как и на стороне клиента, onsubmit. Есть идеи?Изменить действие формы с помощью javascript

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestNamespace.WebForm1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
</head> 
<body onload="setaction(<%= step %>);"> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:Label ID="lblCurrentUrl" runat="server"></asp:Label> 
    <asp:Panel ID="panel1" runat="server"> 
    Panel 1<asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
      Text="Button" /> 
    </asp:Panel> 
    <asp:Panel ID="panel2" runat="server" Visible="false"> 
    Panel 2<asp:Button ID="Button2" runat="server" onclick="Button2_Click" 
      Text="Button" /> 
    </asp:Panel> 
<asp:Panel ID="panel3" runat="server" Visible="false"> 
Panel 3<asp:Button ID="Button3" runat="server" onclick="Button3_Click" 
     Text="Button" /> 
</asp:Panel> 
<asp:Panel ID="panel4" runat="server" Visible="false"> 
Panel 4<asp:Button ID="Button4" runat="server" onclick="Button4_Click" 
     Text="Button" /> 
</asp:Panel>    
</div> 

    <script language="javascript" type="text/javascript"> 
     function setaction(step) { 
      var bdy = document.getElementsByTagName("body")[0]; 

      bdy.setAttribute("action", "webform1.aspx?step=" + step); 
      alert(document.location.href); 
     } 
</script> 
</form> 
</body> 
</html> 


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace TestNamespace 
{ 
public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected int step; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     lblCurrentUrl.Text = Request.Url.ToString(); 
     if (IsPostBack) return; 

     step = 1; 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     panel1.Visible = false; 
     panel2.Visible = true; 
     step = 2; 
    } 

    protected void Button2_Click(object sender, EventArgs e) 
    { 
     panel2.Visible = false; 
     panel3.Visible = true; 

     step = 3; 
    } 

    protected void Button3_Click(object sender, EventArgs e) 
    { 
     panel3.Visible = false; 
     panel4.Visible = true; 
     step = 4; 
    } 

    protected void Button4_Click(object sender, EventArgs e) 
    { 

    } 
} 
} 

ответ

1

Похоже, вы настраиваете действие на тело, а не на форму. Если я что-то отсутствует, вы должны быть в состоянии решить эту проблему следующим образом:

function setaction(step) { 
    var frm = document.getElementsByTagName("form")[0]; 

    frm.setAttribute("action", "webform1.aspx?step=" + step); 
    alert(document.location.href); 
} 
+0

AAAAAAAAAAAAHHHHHHHHHHHHHHHHH. Наверное, мне просто нужен был второй набор глаз. Полностью пропустил это. Я ударил головой о стену. Благодарю. – Darthg8r

+0

ха-ха, я был там. :) Рад был помочь. –

Смежные вопросы