JQuery removeClass和移除class的事件绑定

今天遇到一个问题, 定义一个样式,且给样式绑定事件,让其只能输入数字. js函数如下:

[javascript] view plain copy
  1. functionNumbersOnlyBind(){
  2. $(".NumbersOnly").bind({
  3. keypress:function(event){
  4. varkey=event.which;
  5. if(key<48||key>122||key>57){
  6. returnfalse;
  7. }
  8. }
  9. });
  10. }
然后添加两个textbox, 第一个用于输入类型, 初始为NUM, 意思为只能输入数字模式, 第二个用于测试这种模式. 当第一个输入框为NUM时,点击按钮Apply, 则第二个输入框就只能输入数字, 第一个输入框为其他字符串时, 第二个则可以输入任何字符.

在实现时,思路是如果第一个输入框为NUM则给第二个输入框添加.NumbersOnly 样式, 否则移除该样式. 本以为移除样式后,第二个输入框中绑定的事件就可以移除, 但是事实证明是不可以移除的. 除非用unbind解除事件,因为虽然事件是通过.NumberOnly样式绑定的, 但是绑定后,这个事件就和这个输入框绑定上了,而和样式没关系了. 所以事件也不会随着样式的移除而移除..

页面源代码:

[html] view plain copy
  1. <html>
  2. <head>
  3. <scripttype="text/javascript"src="./jquery/jquery-1.7.2.js"></script>
  4. <scripttype="text/javascript">
  5. $(document).ready(function(){
  6. functionNumbersOnlyBind(){
  7. $(".NumbersOnly").bind({
  8. keypress:function(event){
  9. varkey=event.which;
  10. if(key<48||key>122||key>57){
  11. returnfalse;
  12. }
  13. }
  14. });
  15. }
  16. $("#txtType").val("NUM");
  17. $("#btnApply").click(function(event){
  18. vartype=$("#txtType").val();
  19. if(type=="NUM"){
  20. $("#txtTest").addClass("NumbersOnly");
  21. NumbersOnlyBind();
  22. //alert("numberonly");
  23. }
  24. else{
  25. //$("#txtTest").removeClass("NumbersOnly");
  26. $("#txtTest").unbind();
  27. //$(".NumbersOnly").unbind();//移除所有的事件
  28. //alert("Removenumberonly");
  29. }
  30. $("#txtTest").val("");
  31. $("#txtTest").attr("readonly",false);
  32. $("#txtTest").focus();
  33. event.preventDefault();
  34. });
  35. });
  36. </script>
  37. </head>
  38. <body>
  39. <inputname="txtType"type="text"maxlength="10"id="txtType">
  40. <inputname="txtTest"type="text"maxlength="10"id="txtTest">
  41. <inputtype="button"name="btnApply"value="Apply"id="btnApply">
  42. </body>
  43. </html>

今天遇到一个问题, 定义一个样式,且给样式绑定事件,让其只能输入数字. js函数如下:

[javascript] view plain copy
  1. functionNumbersOnlyBind(){
  2. $(".NumbersOnly").bind({
  3. keypress:function(event){
  4. varkey=event.which;
  5. if(key<48||key>122||key>57){
  6. returnfalse;
  7. }
  8. }
  9. });
  10. }
然后添加两个textbox, 第一个用于输入类型, 初始为NUM, 意思为只能输入数字模式, 第二个用于测试这种模式. 当第一个输入框为NUM时,点击按钮Apply, 则第二个输入框就只能输入数字, 第一个输入框为其他字符串时, 第二个则可以输入任何字符.

在实现时,思路是如果第一个输入框为NUM则给第二个输入框添加.NumbersOnly 样式, 否则移除该样式. 本以为移除样式后,第二个输入框中绑定的事件就可以移除, 但是事实证明是不可以移除的. 除非用unbind解除事件,因为虽然事件是通过.NumberOnly样式绑定的, 但是绑定后,这个事件就和这个输入框绑定上了,而和样式没关系了. 所以事件也不会随着样式的移除而移除..

页面源代码:

[html] view plain copy
  1. <html>
  2. <head>
  3. <scripttype="text/javascript"src="./jquery/jquery-1.7.2.js"></script>
  4. <scripttype="text/javascript">
  5. $(document).ready(function(){
  6. functionNumbersOnlyBind(){
  7. $(".NumbersOnly").bind({
  8. keypress:function(event){
  9. varkey=event.which;
  10. if(key<48||key>122||key>57){
  11. returnfalse;
  12. }
  13. }
  14. });
  15. }
  16. $("#txtType").val("NUM");
  17. $("#btnApply").click(function(event){
  18. vartype=$("#txtType").val();
  19. if(type=="NUM"){
  20. $("#txtTest").addClass("NumbersOnly");
  21. NumbersOnlyBind();
  22. //alert("numberonly");
  23. }
  24. else{
  25. //$("#txtTest").removeClass("NumbersOnly");
  26. $("#txtTest").unbind();
  27. //$(".NumbersOnly").unbind();//移除所有的事件
  28. //alert("Removenumberonly");
  29. }
  30. $("#txtTest").val("");
  31. $("#txtTest").attr("readonly",false);
  32. $("#txtTest").focus();
  33. event.preventDefault();
  34. });
  35. });
  36. </script>
  37. </head>
  38. <body>
  39. <inputname="txtType"type="text"maxlength="10"id="txtType">
  40. <inputname="txtTest"type="text"maxlength="10"id="txtTest">
  41. <inputtype="button"name="btnApply"value="Apply"id="btnApply">
  42. </body>
  43. </html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值