2016-04-29 55 views
0

我有两个需要验证的输入字段,但我无法存储其中一个字段的初始值。输入验证不能超过初始值jQuery

例如第一个字段的值为10,因此输入不能大于10

我的想法是让价值的onfocus并将其存储在一个全局变量,但是变量在不断变化。

进行验证的两个功能只是为了检查ammount的有效

var original_amount; 
var original_purchprice; 

    $('#order').on({ 
     focus: function() { 
      original_amount = $('.order_amount').val(); 
      original_purchprice = $('.order_purchprice').val(); 
     }, 
     keyup: function() { 
      var amount = $('.order_amount').val(); 
      var purchprice = $('.order_purchprice').val(); 
      var isValid_amount = true; 
      var isValid_purchprice = true; 

      if(!isValidAmmount(amount) || (amount > original_amount)){ 
       isValid_amount = false; 
      } 

      if(!roundPositiveNumber(purchprice)){ 
       isValid_purchprice = false; 
      } 

      if(isValid_amount == true && isValid_purchprice == true) { 
       $('#save_order').prop('disabled', false); 
      } else { 
       $('#save_order').prop('disabled', true); 
      } 
     } 
    }, '.order_amount, .order_purchprice'); 

HTML

<input type='text' class='order_amount' value=10> 
<input type='text' class='order_purchprice'value=69.95> 
+0

提供您的html代码以获得更多理解 –

+0

这仅仅是两个输入字段没有更多.. – Bart

回答

1

您可以使用jQuery data法(https://api.jquery.com/jquery.data/)存储每个输入的原始值。

然后收听keyup事件并将输入的当前值与初始值进行比较。

$(document).ready(function() { 

    $('.order_amount').each(function(){ 
     $(this).data('original_amount', $(this).val()); 
    }); 

    $('.order_purchprice').each(function(){ 
     $(this).data('original_purchprice', $(this).val()); 
    }); 

    $('#order').on({ 
     keyup: function() { 

      var $current_input = $(this); 
      var current_amount = $current_input.val(); 
      var original_amount = $current_input.data('original_amount'); 

      // other logic goes here 
     } 
    }, '.order_amount, .order_purchprice'); 

}); 

这里的小提琴:https://jsfiddle.net/c07mc2L1/13/

+0

是的,也许我应该已经创建它,但有多个输入字段相同,例如一个订单可能有10个部分比我有10倍的金额和Purchprice – Bart

+0

我已经更新了我的答案。更新金额时,您是否还需要比较Purchprice?给我你的反馈,以便我可以完成它。 – andreivictor

+0

谢谢!该purchprice不需要只比较金额 – Bart