2012-10-22 63 views
0

我想创建一个简单的html文件,其中包含员工的月薪,并且必须计算每个工资的应纳税额!我使用“添加”按钮来添加更多员工文本框,从而创建一个包含类似div的新类div!在工资textfield的onchange事件中,我无法设置相应员工的税值!使用jquery设置输入值

不幸的是,我无法上传截图,所以我把所有的代码,使我的问题尽可能清晰!

这是html代码:

<div id="all_emps"> 
    <div class="em_area"> 
     <label>Employee 1</label> 
     <input type=text required /> 
     <label>Position</label> 
     <input type=text required /> 
     <label>Monthly Salary</label> 
     <input class=em_sal type=text required size=10 /> 
     &nbsp &nbsp &nbsp 
     <label>Salary Tax</label> 
     <input class=em_tax type=text required size=10 readonly /> 
     &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 
     <a href="#" id="add_emp">Add</a> 
     &nbsp &nbsp &nbsp &nbsp &nbsp 
     <a href="#" id="del_emp">Remove</a> 
    </div> 
</div> 

这里是jQuery代码:

$(document).ready(function(){ 
var counter = 2; 
$("#add_emp").click(function() { 
var newTextBoxDiv = $(document.createElement('div')) 
    .attr("class", 'em_area' + counter); 

newTextBoxDiv.after().html('<br><label>Employee '+counter+' </label> <input id=em_name name=em_name type=text required /> <label>Position</label> <input id=em_post name=em_post type=text required /> <label>Monthly Salary</label> <input class=em_sal name=em_sal size=10 type=text required /> &nbsp &nbsp &nbsp <label>Salary Tax</label> <input class=em_tax type=text size=10 required /> '); 
newTextBoxDiv.appendTo("#all_emps"); 
counter++; 
}); 

$("#del_emp").click(function() { 
if(counter==2) 
{ 
    alert("Can not remove the only employee!"); 
} 
else{ 
    counter--; 
    $(".em_area" + counter).remove(); 
} 
}); 
    $('#em_area').on('change' , '.em_sal', function() { // Fire the change event 

var salary = parseInt(this.value); 
var dueTax = 0; 
if(salary < 5000){ 
    alert('Salary less than 5000!!'); 
} 
else if(salary >= 5000) 
{ 
    due_tax= salary/100; 
    due_tax= salary - due_tax; 
} 
// This will get the corresponding tax input for the employee.. 
$(this).closest('div').find('.em_tax').val(due_tax) ; 
}); 
}); 

回答

0

重构了一下。你现在一个all_emps格,每位员工一个div,与id="em<counter>"

JsFiddle

HTML的一部分:

<div id="all_emps"> 
    <div id="em1"> 
     <label>Employee 1</label> 
     <input type=text required /> 
     <label>Position</label> 
     <input type=text required /> 
     <label>Monthly Salary</label> 
     <input class=em_sal type=text required size=10 /> 
     &nbsp &nbsp &nbsp 
     <label>Salary Tax</label> 
     <input class=em_tax type=text required size=10 readonly /> 
     &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 

    </div> 
    <a href="#" id="add_emp">Add</a> 
     &nbsp &nbsp &nbsp &nbsp &nbsp 
    <a href="#" id="del_emp">Remove</a>  
</div>​​​​​​ 

JS部分

$(document).ready(function() { 
    var counter = 2; 
    $("#add_emp").click(function() { 
     var newTextBoxDiv = $(document.createElement('div')); 
     newTextBoxDiv.attr("id", 'em' + counter); 

     newTextBoxDiv.html('<br><label>Employee ' + counter + ' </label> <input id=em_name name=em_name type=text required /> <label>Position</label> <input id=em_post name=em_post type=text required /> <label>Monthly Salary</label> <input class=em_sal name=em_sal size=10 type=text required /> &nbsp &nbsp &nbsp <label>Salary Tax</label> <input class=em_tax type=text size=10 required /> '); 

     $("#all_emps div").last().after(newTextBoxDiv); 
     counter++; 
    }); 

    $("#del_emp").click(function() { 
     if (counter == 2) { 
      alert("Can not remove the only employee!"); 
     } else { 
      counter--; 
      $("#em" + counter).remove(); 
     } 
    }); 
    $('#all_emps').on('change', '.em_sal', function() { // Fire the change event 
     var salary = parseInt(this.value); 
     var due_tax= 0; 
     if (salary < 5000) { 
      alert('Salary less than 5000!!'); 
     } else{ 
      due_tax = salary/100; 
      due_tax = salary - due_tax; 
     } 
     // This will get the corresponding tax input for the employee.. 
     $(this).closest('div').find('.em_tax').val(due_tax); 
    }); 
}); 

+0

想我需要使用.after()instea d。of()来增加em div的增加值!并且计数器也必须用2来初始化! – goseo

+0

它在jsfiddle中可以正常工作,但并不在我的电脑中!可能是什么问题? jquery文件不支持代码的某些部分? – goseo

+0

要查看问题是否与我的jquery文件我链接了一个更新的jquery的源,它是: 但是当我在em_sal textfield中输入数字时,它什么也不做! Pleaaaaaaaaaaaase帮帮我! – goseo