0

老实说,我在这个错误上尝试了谷歌的几种不同途径,但我的头撞到了一堵砖墙上。

我在后面的代码中有一点 jquery:

tbxProdAC.Attributes.Add("onclick", "$('radProdAC.ClientID').attr('checked', true); $('ddlBuyer.ClientID').val('--Choose Buyer--'); $('ddlSub.ClientID').val('--Choose Sub Category--'); $('ddlProd.ClientID').val('--Choose Product--');");

但是,每当我在打开调试的情况下单击文本框时,我都会在以下行收到上述错误:

 <input name="ctl00$ContentPlaceHolder1$tbxProdAC" type="text" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$tbxProdAC\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="ctl00_ContentPlaceHolder1_tbxProdAC" class="completionList2" onclick="$('radProdAC.ClientID').attr('checked', true); $('ddlBuyer.ClientID').val('--Choose Buyer--'); $('ddlSub.ClientID').val('--Choose Sub Category--'); $('ddlProd.ClientID').val('--Choose Product--');" style="z-index: 1; left: 200px; top: 475px; position: absolute; height: 20px; width: 345px;" />   

现在 ctl00$ContentPlaceHolder1$tbxProdAC 并不真正存在。这是一个位于内容占位符内的内容页面上的控件。

如何确保 jquery 与正确的 ID 一致,或者如何确保内容占位符不修改原始控件 ID?

当我疯狂地尝试不同的事情时,任何帮助都会得到很大的帮助!

4

2 回答 2

0

在 onchange 事件处理程序中,您不需要 javascript 位,您可以直接调用该函数,您只需要这样做是您通过 href 调用该函数。您也不能像在超时中那样传递参数。

可能值得在函数中调用超时而不是在调用事件时调用。

无论哪种方式,您都可以在超时时异常调用该函数,例如;

setTimeout(function(){youfunction here with parameters}, 0);

此外,我会将其他事件单击等中发生的所有事情转移到它们自己的函数中。如果您将所有这些东西移动到函数中,或者将其移动到外部 js 文件中,您将能够跟踪更多正在发生的事情,因为它会更清晰。如果您还没有,也可以使用 firebug 进行调试。如果您需要从页面中获取生成的变量,那么只需页面中的变量并从 js 中调用它们。

在 jquery do 中可能过于具体并遍历 dom 以查找内容而不是显式引用它,这不仅使代码更容易,而且使代码更通用,因此更可重用。

于 2010-01-29T13:41:40.480 回答
0
tbxProdAC.Attributes.Add(    
    "onclick", 
    "$('" + radProdAC.ClientID + "').attr('checked', true); $('" + ddlBuyer.ClientID + "').val('--Choose Buyer--'); $('" + ddlSub.ClientID + "').val('--Choose Sub Category--'); $('" + ddlProd.ClientID + "').val('--Choose Product--');"
);

您需要获取客户端 ID,这必须在引号之外完成。

"$('radProdAC.ClientID').attr('checked', true);需要将其更改"$('" + radProdAC.ClientID + "').attr('checked', true);为键入的任何位置。

于 2010-01-29T13:43:02.367 回答