2012-02-10 52 views
1

有没有办法将一个javascript函数关联到用户控件?假设我有一个用.ascx编写的名称控制。我可以定义一个客户端功能,可以说.clear(),这将与名称控制相关联。明确的功能将清除该控件的所有元素。我知道我可以创建清晰的()javascript函数,但这将是全局JavaScript函数,不一定与名称控制绑定。我想扳平函数名控制,以使给定的,我有提到名字的对象,我应该能够简单地调用该函数从参考类似:有没有办法将一个函数关联到usercontrol

name.clear(); 

我知道这可以使用MS完成Ajax框架,但想知道我是否可以使用jQuery来做类似的事情。

回答

0

如果“清除”你的意思是设置的文本/密码输入,文本域的值,然后选择元素为空字符串,并设置无线电和复选框!checked,那么你可以做这样的事情:

$("#someid").find('select,textarea,input[type="text"],input[type="password"]').val(''); 
$("#someid").find('input:radio,input:checkbox').prop('checked',false); 

或者作为插件:

(function($) { 
    $.fn.clearChildren = function() { 
    this.find('select,textarea,input[type="text"],input[type="password"]').val(''); 
    this.find('input:radio,input:checkbox').prop('checked',false); 
    return this; 
    }; 
})(jQuery); 

$("#someid").clearChildren(); 

演示:http://jsfiddle.net/nnnnnn/AvfUz/

(jQuery也有一个 “:输入” 选择所有选择素选择器ts,textareas和输入,但是您不想设置复选框和收音机的值,因此需要单独完成)。

+0

我喜欢插件选项,但我担心没有什么是将clearChildren函数绑定到nameControl。 clearChildren是一个全局函数,可以在任何对象上调用。当然,我可以在函数中检查我调用clearChildren函数的对象是nameControl,而不是其他任何东西,但是我正在寻找可用于将函数绑定到类的jQuery级别支持的可能性。 – CSC 2012-02-10 21:17:58

+0

我真的不明白你的担忧:你为什么要限制这种类型的功能,以单一控制?我想你可以添加一个方法到相应的服务器端类,这样<%= TheControl.clear()%>将输出合适的JS。顺便说一句,我忘了在我的回答中提到,如果你的控件是一个html表单元素,你可以调用内置的.reset()方法... – nnnnnn 2012-02-10 22:31:33

+0

谢谢nnnnnn的回复。这就是为什么我想限制功能为单一控制的原因。我们团队中的大多数用户控件都是使用Ajax框架创建的。他们有“clear()”方法来清除这些控件的内容。因为Ajax框架允许用户将一个方法与控制类联系起来很容易。你有一个Ajax控件,可以说“Address”为其定义了“clear()”。当您调用<地址控制参考> .clear()时,代码将清除地址控制的内容。 – CSC 2012-02-13 20:53:09

0

用户控件本身并未呈现为实际的html元素,而是任何用户控件的实际呈现为html元素的部分可以从客户端脚本中引用。

你需要控制客户端ID写入网页中的HTML或用户控制像这样:

<script type="text/javascript"> 
    $('#<%= TheControl.ClientID %>').clearChildren(); 
</script> 

清除孩子jQuery的功能@ NNNNNN的答案被定义。

相关问题