2015-10-16 49 views
0

我正在使用jQuery制作货币转换器的项目。我从api服务获取货币信息并将其加载到具有多种货币的表格中。之后,我希望能够在一个输入中输入一个数字,并根据输入的输入使其他输入产生正确的货币。试图让货币转换器使用jQuery工作

正如你可以在下面的代码中看到,我试图做的一切,但这些都被在那一刻输入的数字输入的功能KEYUP工作。 我输出的函数结果也不正确。

如果任何人都可以点出非常明显的错误,我正在这里将是非常有益!

JS:

function parseCurrency(data) { 
var container = $('.currency-data'); 

var iskInput = $('<tr>' +'<td>' + '<strong>ISK</strong>' + 
    '</td> ' + '<td>' + 'Íslensk króna' + 
    '</td>' + '<td></td>' + '<td>' + '1' + '</td>' + 
    '<td>' + '<input value="1000" class="input-value"></input>' + '</td>' + 
    '</tr>'); 
iskInput.prependTo(container); 

$.each(data.results, function (key, currency){ 
    var row = []; 
    row = $('<tr></tr>'); 
    row.append('<td>' + '<strong>' + currency.shortName + '</strong>' + '</td>'); 
    row.append('<td>' + currency.longName + '</td>'); 
    row.append('<td>' + currency.changeCur + '</td>'); 
    row.append('<td>' + currency.value + '</td>'); 
    var input = $('<input class="input-value"></input>'); 
    input.val((1000/currency.value).toFixed(2)); 
    var td = $('<td></td>'); 
    input.appendTo(td); 
    td.appendTo(row); 
    container.append(row); 
}) 
var inputValue = $('.input-value'); 
var inputActive = $('.input-value:focus') 

$.each(data.results, function (key, currency) { 
    inputValue.not(inputActive).keyup(function() { 
     inputValue.val((inputValue.val()/currency.value).toFixed(2)); 
    }); 
}) 
} 

HTML

<form name="converter"></div> 
     <h4>Collecting data from: <a href="" class="m5">m5</a> <a href=""  class="arion">A bank</a> <a href="" class="lb">Lb</a></h4> 
     <div> 
      <table class="table table-striped"> 
       <thead> 
        <tr> 
         <th>Obj1</th> 
         <th>Obj2</th> 
         <th>Obj3</th> 
         <th>Obj4</th> 
         <th>Obj5</th> 
        </tr> 
       </thead> 
       <tbody class="currency-data"> 
       </tbody> 
      </table> 
      <div class="loader lead" style="display:none;">Loading...</div>   
     </form> 
+0

你能提供一个工作的例子吗?很难看到你正在尝试做什么 – Adjit

+1

在循环中的绑定输入keyup将复合事件处理程序和最后的事件处理程序将占上风。您正在为每个元素绑定严重的处理程序,而不是针对每次迭代中需要的处理程序 – charlietfl

+0

您似乎描述了一种货币转换表,该表将将以任何货币输入的值转换为表中存在的所有其他货币。但对于每种货币,您只知道来自ÍslenskKrna的汇率。因此,您有两个部分来解决您的问题:(a)设计一个通用公式,该公式可以根据您所拥有的数据进行任意转换; (b)编码该广义公式。顺便说一句 - 一旦你有了头,它实际上很简单。 –

回答

1

这对我来说有点陌生,因为您选择的是不集中的所有输入字段,并在KEYUP事件处理程序您只需使用inputValue变量,该变量也包含焦点输入元素。顺便说一下,您不应该在data.results上迭代两次。正如charlietfl评论说,将绑定放入迭代没有任何意义。这也是一个很大的错误。