在jQuery中填充文本框时执行javascript函数?

时间:2010-01-04 21:02:50

标签: asp.net jquery asp.net-ajax

如果用文本填充文本框,如何在JavaScript中执行函数?文本框与用户隐藏。它将由USB磁卡刷卡填充。

伪代码:

<script language="javascript" type="text/javascript">
    function MyFunction() {
        //execute this function when MyTxtBox is populated
    }
</script>
<asp:TextBox id="MyTxtBox" runat="server" Visible="false" />

3 个答案:

答案 0 :(得分:3)

好像你在页面加载时这样做了。如果你是的话,那就行了。

$(document).ready(function(){
   if($('#MyTxtBox').val().length > 0){
      MyFunction();
   }
});

如果它正在改变:

$(document).ready(function(){
   $('#MyTxtBox').change(function(){
       if($(this).val().length > 0){
          MyFunction();
       }
   });
});

答案 1 :(得分:1)

请参阅munch的答案,但使用CSS隐藏文本框,因为设置visible = false将导致文本框HTML未呈现,因此无法在客户端使用。

<style type="text/css">
.USBBox
 {
     position: absolute;
     left: -999em; 
     overflow: hidden;
 } 
 </style>   
<asp.textbox id="MyTextBox" runat="server" CSSClass="USBBox" />

然后,您可以使用jQuery的类选择器来访问文本框,而不用担心名称错位:

%('.USBBox')

如果您在页面上有很多元素,那么您最好通过id访问,在这种情况下使用客户端ID来避免任何名称错位问题:

$('#<%= MyTextBox.ClientID %>')

更新

link中提供的CSS解决方案用于隐藏用户的文本框。使用正确的解决方案更新了USBBox CSS类,因为设置display:none导致javaScript问题。

答案 2 :(得分:0)

附加到MyTxtBox的onChange事件。您需要执行一些ASP.NET来生成适合在JavaScript中使用的ClientID,因为ASP.NET会将MyTxtBox ID修改为其他内容。

<asp:TextBox id="MyTxtBox" runat="server" Visible="false" />
<script language="javascript" type="text/javascript">
    function MyFunction() {
        //execute this function when MyTxtBox is populated
    }

    document.getElementById("<%= MyTxtBox.ClientID %>").onChange = MyFunction;
</script>