【问题标题】:Microsoft JScript runtime error: Object required in formMicrosoft JScript 运行时错误:表单中需要对象
【发布时间】:2013-07-01 10:35:37
【问题描述】:

我有这个 html 代码

<td align="center">
    <asp:Button ID="btnPesquisar" runat="server" Text="Pesquisar" Width="150px" CssClass="manu_btn" OnClientClick="return validaParamsEstatisticaTopSearch();" ToolTip="Prima para efectuar a pesquisa">
    </asp:Button>
</td>
<td style="font-size: 10px;">
    <asp:DropDownList ID="ddlTopSearch" runat="server" Width="250px" Font-Size="10px" AutoPostBack="true" ToolTip="Escolha o tipo de pesquisa">
    </asp:DropDownList>
</td>

和我的功能:

function validaParamsEstatisticaTopSearch(){

var dT=document.getElementById("ddlTopSearch").value;
var dL=document.getElementById("ddlLingua").value;
var tT=document.getElementById("txtNTop");

var tdI=document.getElementById("txtDiaI");
var tmI=document.getElementById("txtMesI");
var taI=document.getElementById("txtAnoI");

var tdF=document.getElementById("txtDiaF");
var tmF=document.getElementById("txtMesF");
var taF=document.getElementById("txtAnoF");


if( dT=="*" )
{ 
    alert("Por favor escolha uma das opções de selecção de pesquisa ('TopSearch')!");
    return false;
}

return true;
}

它给了我一个“Microsoft JScript runtime error: Object required”。

我似乎无法弄清楚我做错了什么。

【问题讨论】:

  • html代码中的ddlTopSearch在哪里?发布你的完整html代码
  • 您需要获取 ClientId 而不是下拉列表的真实 id,因为在明确指定之前它总是不同的

标签: c# javascript asp.net jscript


【解决方案1】:

getElementById在参数上返回null,然后您尝试使用该参数时,通常会出现此错误。

例如在这一行,你可能没有找到ddlTopSearch

var dT=document.getElementById("ddlTopSearch").value;

因为 asp.net 在页面上渲染它的方式不同,要获得正确/渲染的 ID,请使用 ClientID as:

var dT=document.getElementById("<%=ddlTopSearch.ClientID%>").value;

其余的id相同。

另外,我必须在这里注意,下拉列表没有将value 作为输入控件的其余部分。要获取值,您必须使用此 javascript 代码:

var e = document.getElementById("<%=ddlTopSearch.ClientID%>");
var sTopSearchValue = e.options[e.selectedIndex].value;

参考: Get selected value in dropdown list using JavaScript?

【讨论】:

  • 是的,该行触发了异常。我会试试。谢谢。为什么选择 ClientID?
  • @bruno 为什么是 ClientID,因为这是返回 id 的那个,就像 asp.net 在 html 上呈现的一样。另请看:stackoverflow.com/questions/5763557/…
  • @bruno 你的参数仍然有空值。你在哪一行得到那个?
  • 如果我使用 var dT=document.getElementById("").value;它给了我错误。如果我使用 var dT=document.getElementById("");它给了我null。
  • 就像你说的,我必须有空参数。我去看看。
【解决方案2】:

请提供更多细节

如果您在 .aspx 页面中使用母版页,那么您应该知道控件 ID 在运行时会更改。

我认为在你的情况下问题是由于错误的控制 ID。

Click here 了解有关由于母版页而更改控件 ID 的更多信息。

【讨论】:

  • 我正在使用 MasterPage 并且 id 是动态变化的。
  • 那么你可以使用这个:document.getElementById("%=ddlTopSearch.ClientID %>").value;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多