RubyOnRails的Javascript查询
我想将j[3]值减去到售价文本字段中,并在损益字段中显示结果,但它只在页面的第一行工作,下一行的计算并不完美RubyOnRails的Javascript查询,javascript,jquery,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails 4,我想将j[3]值减去到售价文本字段中,并在损益字段中显示结果,但它只在页面的第一行工作,下一行的计算并不完美 函数sm(){ var txtFirstNumberValue=document.getElementById('txt1').value; var txtSecondNumberValue=document.getElementById('txt2').value; var结果=parseFloat(txtFirstNumberValue)-parseFloat(txtSecond
函数sm(){
var txtFirstNumberValue=document.getElementById('txt1').value;
var txtSecondNumberValue=document.getElementById('txt2').value;
var结果=parseFloat(txtFirstNumberValue)-parseFloat(txtSecondNumberValue);
如果(!isNaN(结果)){
document.getElementById('txt3')。值=结果;
}
}
{:controller=>“users”,:action=>“rate_per_unit_report”}do|i|%>
@q、 :id=>“txt1”,:onkeyup=>“sm()”,:class=>“txt”,:readonly=>true%>
“txt2”,:onkeyup=>“sm()”,:class=>“txt”%>
“txt3”,:class=>“txt”,:readonly=>true%>
全部的
回答我……。
如果您可以使用jquery,那么简单的解决方案是:
只要改变这个:
<td><%=i.text_field j[3],:value=>@q,:id=>"txt1",:onkeyup=>"sm()",:class=>"txt",:readonly =>true%></td>
<td><%= i.text_field :selling_price,:id=>"txt2",:onkeyup=>"sm()",:class=>"txt"%></td>
<td><%= i.text_field :profit_loss,:id=>"txt3",:class=>"txt",:readonly =>true %></td>
@q,:id=>“txt1”,:onkeyup=>“sm()”,:class=>“txt”,:readonly=>true%>
“txt2”,:onkeyup=>“sm()”,:class=>“txt”%>
“txt3”,:class=>“txt”,:readonly=>true%>
为此:
<td><%=i.text_field j[3],:value=>@q,:id=>"txt1",:onkeyup=>"sm()",:class=>"txt text1",:readonly =>true%></td>
<td><%= i.text_field :selling_price,:id=>"txt2",:onkeyup=>"sm()",:class=>"txt text2"%></td>
<td><%= i.text_field :profit_loss,:id=>"txt3",:class=>"txt text3",:readonly =>true %></td>
@q,:id=>“txt1”,:onkeyup=>“sm()”,:class=>“txt text1”,:readonly=>true%>
“txt2”,:onkeyup=>“sm()”,:class=>“txt text2”%>
“txt3”,:class=>“txt text3”,:readonly=>true%>
并将sm功能更改为:
<script>
function sm() {
var txtFirstNumberValue = $(this).closest('tr').find('.text1').val();
var txtSecondNumberValue = $(this).closest('tr').find('.text2').val();
var result = parseFloat(txtFirstNumberValue) - parseFloat(txtSecondNumberValue);
if(!isNaN(result)) {
$(this).closest('tr').find('.text3').val(result);
}
}
</script>
函数sm(){
var txtFirstNumberValue=$(this.closest('tr').find('.text1').val();
var txtSecondNumberValue=$(this.closest('tr').find('.text2').val();
var结果=parseFloat(txtFirstNumberValue)-parseFloat(txtSecondNumberValue);
如果(!isNaN(结果)){
$(this).closest('tr').find('.text3').val(result);
}
}
您可以使用jquery吗?这是一个问题,因为您在循环中使用相同的ID创建字段,所以必须创建动态ID