2016-07-29 35 views
0

我使用相同css类的多个文本框展开了一个web窗体。 ,我想将一个特定的方法绑定到所有使用该类的文本框。 初级讲座是我的代码将javascript函数绑定到窗口加载输入控件

window.onload = function() 
    { 

     var tObj = document.getElementsByClassName('exa'); 
     for (var i = 0; i < tObj.length; i++) {    
      tObj[i].onblur(convertAmount(event,this)); 
     } 
    } 

的另一个函数 'convertAmount()' 低于

function convertAmount(evt, obj) { 
     if (obj.value != "") { 

      var num = parseFloat(obj.value); 
      num = Math.round((num + 0.00001) * 100)/100; 
      obj.value = num.toFixed(2); 
     } 
     else { 
      obj.value = "0.00"; 
     } 
    } 

HTML代码

<div> 
     <input type="text" id="finalvalue" class="exa"/> 
     <input type="text" id="grossvalue" class="exa"/> 
    <div> 

当浏览器负载仅第一次 '0.00' 的值来在那些文本框上。但是当我在这些文本框中键入一些值并按Tab键不工作!请帮忙这里有什么不对

+0

我应该在哪里编写.bind关键字? – sidhewsar

+0

我的不好! 'onBlur'应该被赋值。是的,你必须绑定,但你必须分配它。 [示例小提琴](https://jsfiddle.net/ynp8b86L/) – Rajesh

+0

你是说每个文本框我们必须写代码onblur事件? – sidhewsar

回答

0

正如之前的评论,应先分配eventHandler,而不是把它作为回调。

所以你代码将是:

tObj[i].onblur = convertAmount.bind(this, event, this); 

另外,事件为任何事件监听和当前对象/元素默认参数被自动绑定到它,因此上面的代码可以简化为

tObj[i].onblur = convertAmount; 

这将绑定上下文,您将获得this中的所有属性。

Sample Fiddle

注:你应该使用addEventListener代替。 onBlur =将取代所有以前的事件。 addEventListener将增加另一个。

Sample Fiddle

+0

不错!现在它的工作!谢谢 – sidhewsar

0

我希望这link对你有帮助。

<div> 
     <input type="text" id="finalvalue" class="exa"/> 
     <input type="text" id="grossvalue" class="exa"/> 
    <div> 


    $(document).ready(function(){ 
    $('.exa').each(function(index,value){ 
    $(this).attr('onblur',convertAmount(event,$(this))) 
    }) 


    }) 

    function convertAmount(evt, obj) { 
    if (obj != "") { 
    $(obj).val('0.00') 
     } 
     else { 
      $(obj).val('0.00') 
     } 


    } 
+0

jQuery未被标记为有问题。在回答之前你应该从OP确认 – Rajesh

相关问题