简体   繁体   English

输入字段值不应大于其他字段值

[英]Input field value should not be greater than other field value

I have two input fields one for advance payment and other for full payment, which are fetched from the database in array. 我有两个输入字段,一个用于预付款,另一个用于全额付款,这些字段是从数组中的数据库中提取的。

If onchange or keyup the advance payment is greater than full payment, Then the advance payment should not be entered or should be equal to full payment. 如果onchangekeyup预付款大于全额付款,则不应输入预付款或应等于全额付款。

I am trying with this code 我正在尝试使用此代码

<input type="text" value="<?php echo $full_payemnt; ?>" id="full_payment_<?php echo $i; ?>">
<input type="text" id="advance_payment_<?php echo $i; ?>" class="advance">
$('.advance').on('change keyup blur', function(e){ 
  var fullPay = $('#full_payment_'+id[1]).val();
  var advancePay = $('#advance_payment_'+id[1]).val();
  console.log( parseInt(advancePay) > parseInt(fullPay))
    if (parseInt(advancePay ) > parseInt(fullPay)) {
       e.preventDefault();     
       $('#advance_payment_'+id[1]).val(fullPay);
    }
});

Here is an example of how you can do it. 这是一个如何做到这一点的例子。

 var $full = $('[name=full]'); var $adv = $('[name=adv]'); $adv.on('keyup keydown', function(e) { var fullPay = parseInt($full.val(), 10); var advPay = parseInt($adv.val(), 10); //tell the parser it is base 10 if (advPay > fullPay && e.keyCode !== 46 // keycode for delete && e.keyCode !== 8 // keycode for backspace ) { e.preventDefault(); $adv.val(''); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="number" name="full" /> <input type="number" name="adv" /> 

Try this, I think you want this. 试试这个,我想你想要这个。

 $('.advance').on('change keyup blur', function(e){ id_arr = $(this).attr('id'); id = id_arr.split("_"); var fullPay = $('#fullPayment_'+id[1]).val(); var advancePay = $('#advancePayment_'+id[1]).val(); if ($(this).val() > parseInt(fullPay)) { e.preventDefault(); $(this).val(fullPay); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <tr> <input type="text" value="12" id="fullPayment_1"> <input type="text" id="advancePayment_1" class="advance"> </tr> <br> <tr> <input type="text" value="19" id="fullPayment_2"> <input type="text" id="advancePayment_2" class="advance"> </tr> 

Made some changes to Sam Battat 's answer so that each time a wrong entry is being typed it erase the entered number instead of clearing the field. Sam Battat的回答做了一些修改,这样每次输入错误的条目时都会删除输入的数字,而不是清除字段。

 var $full = $('[name=full]'); var $adv = $('[name=adv]'); $adv.on('keyup keydown', function(e) { var fullPay = parseInt($full.val(), 10); var advPay = parseInt($adv.val(), 10); //tell the parser it is base 10 if (advPay > fullPay && e.keyCode !== 46 // keycode for delete && e.keyCode !== 8 // keycode for backspace ) { e.preventDefault(); $the_value = $adv.val(); $the_value = $the_value.substring(0, $the_value.length - 1); $adv.val($the_value); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="number" name="full" /> <input type="number" name="adv" /> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM