【问题标题】:javascript not working in dotnetnukejavascript 在 dotnetnuke 中不起作用
【发布时间】:2011-08-29 06:27:22
【问题描述】:

我有一个javascript

<script type="text/javascript" language="JavaScript">
function getFaq(selectedFaq)
{
 document.frmFaqs.S1.value = selectedFaq;
}

ascx 是

    <script type="text/javascript" language="JavaScript">
    alert("asds");

    function getFaq(selectedFaq)
    {
   <asp:Literal id="litScript" runat="server" />
    }
    </script>
    </head>
   <body> 
   <form action="" name="frmFaqs">        
   <div runat="server" id="wrapper">
    </div>          
    </form>
 </body>

ascx.cs 是

   protected void Page_Load(System.Object sender, System.EventArgs e)
    {
        FAQController obj = new FAQController();
        DataSet ds = new DataSet();
        int id = 1;
        ds = obj.getfaq(id);
        litScript.Text += "{document.frmFaqs.S1.value = selectedFaq;}";
        string ltr;
        ltr = "<tr>";
        ltr += "<td height='52' valign='top' width='100%'>";
        ltr += "<table style='border-collapse: collapse;' id='AutoNumber1' border='0' bordercolor='#111111' cellpadding='0' cellspacing='0' height='1' width='100%'>";
        ltr += "<tbody>";
        ltr += "<tr><td align='center' height='42' width='34%'>&nbsp;</td><td align='center' height='42' width='33%'><p align='left'><font color='#0000FF' face='Verdana'>Question</font></p></td><td align='center' height='42' width='33%'>&nbsp;</td> </tr>";
        ltr += "<tr><td align='center' height='37' width='34%'>&nbsp;</td><td align='center' height='37' width='33%'><p align='left'><select size='16' name='cmbFaqs' style='width:400;height:146' onchange='getFaq(frmFaqs.cmbFaqs.options[frmFaqs.cmbFaqs.selectedIndex].value);  return false' multiple='multiple'><option selected='selected'>Select Your Question</option>";
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            if (i == 0)
            {
                ltr += "<option>-----" + ds.Tables[0].Rows[i]["heading"].ToString() + "-----</option>";
                Session["temp"] = ds.Tables[0].Rows[i]["heading"].ToString();
                ltr += "<option value='" + ds.Tables[0].Rows[i]["answer"].ToString() + "'>" + ds.Tables[0].Rows[i]["questions"].ToString() + " </option>";
            }
            else if (Session["temp"].ToString() == ds.Tables[0].Rows[i]["heading"].ToString())
            {
                ltr += "<option value='" + ds.Tables[0].Rows[i]["answer"].ToString() + "'>" + ds.Tables[0].Rows[i]["questions"].ToString() + " </option>";
            }
            else
            {
                ltr += "<option>-----" + ds.Tables[0].Rows[i]["heading"].ToString() + "-----</option>";
                Session["temp"] = ds.Tables[0].Rows[i]["heading"].ToString();
                ltr += "<option value='" + ds.Tables[0].Rows[i]["answer"].ToString() + "'>" + ds.Tables[0].Rows[i]["questions"].ToString() + " </option>";
            }
        }
        ltr += "</select></p></td><td align='center' height='37' width='33%'>&nbsp;</td></tr>";
        ltr += "<tr><td align='center' height='44' width='34%'>&nbsp;</td><td align='center' height='44' width='33%'><p align='left'><font color='#0000FF' face='Verdana'>Answer <font size='2'>(Do not type in this box)</font></font></p></td><td align='center' height='44' width='33%'>&nbsp;</td></tr>";
        ltr += " <tr><td align='center' width='34%'><font style='font-size: 9pt' face='Arial'><br>&nbsp;</font></td><td align='center' width='33%'><p align='left'><textarea rows='2' name='S1' cols='20' style='width: 400px; height: 247px;'>Unfortunately,we are not qualified to answer questions authoritively on Islam and therefore refrain from doing so in order not to mislead. We are only able to answer questions on our products. Please redirect your question to &lt;A target='_blank'";
        ltr += "href='http://english.islamweb.net/ver2/Fatwa/index.php?lang=E'&gt;http://english.islamweb.net/ver2/Fatwa/index.php?lang=E&lt;/A&gt;or &lt;a href='http://www.askimam.com'&gt;www.askimam.com&lt;/a&gt;</textarea></p></td><td align='center' width='33%'>&nbsp; </td></tr>";
        ltr += "</tbody>";
        ltr += "</table>";
        ltr += "</td>";
        ltr += "</tr>";
        wrapper.Controls.Add(new LiteralControl(ltr));

    }

当我在 .aspx 页面中使用它时效果很好。但是当我在 dotnet nuke 的用户控件中尝试它时,javascript 无法正常工作

注意:frmFaqs 是一个带有 runat=server 的表单...我如何在 dotnetnuke 中使用表单标签

【问题讨论】:

  • 您能否发布 .ascx 以便我们查看您正在使用的内容?您可能只需要使用表单的 ClientID。
  • 我已经在代码本身中完成了大部分工作......我将 ascx 和 ascx.cs 都放入了

标签: javascript asp.net dotnetnuke


【解决方案1】:

DotNetNuke 将所有内容包装在一个表单中,您的代码不能有自己的表单。如果您需要一个表单,则需要使用 iframe,或者在主表单之外动态(使用 JavaScript)移动/创建它。

【讨论】:

  • 您遇到了什么样的错误?控制台中是否存在 JavaScript 错误?页面是否发送了帖子,但没有更新任何内容? iframe 的内容是什么(即那里正在加载什么?一个纯 HTML 页面?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 2021-08-14
相关资源
最近更新 更多