提问者:小点点

如何使用passley validate验证jQuery Currency formater的输入字段?(也许是正则表达式?)


我有一个输入字段,它使用JavaScript将数字enteret转换成丹麦货币(20000将显示为20.000,00KR)..在此输入中,我需要验证(使用passley validate)以下内容:

  1. 输入的只有数字。
  2. 数字介于10000和200000之间。

我尝试使用data-parsley-type=“digits”data-parsley-length=“[5,6]”,该offcause验证该数字是否不低于10000,但也将验证9999999,该offcause不是完美的,但如果我不能将限制设置为200000则可以。最大的问题是,当我在输入框中写入时,Passley会验证输入,但当我“走出”输入时,将输入转换为货币格式的JavaScript会被触发,现在输入字段有“。和“KR”因此passley validate返回输入错误。

我如何使欧芹验证即“10000,00kr。”但在“1K.000.00KR”上失败了?..也许正则表达式?...但怎么做?

null

var currencyInput = document.querySelector('input[type="digits"]')
var currency = 'DKK' // https://www.currency-iso.org/dam/downloads/lists/list_one.xml

 // format inital value
onBlur({target:currencyInput})

// bind event listeners
currencyInput.addEventListener('focus', onFocus)
currencyInput.addEventListener('blur', onBlur)


function localStringToNumber( s ){
  return Number(String(s).replace(/[^0-9.-]+/g,""))
}

function onFocus(e){
  var value = e.target.value;
  e.target.value = value ? localStringToNumber(value) : ''
}

function onBlur(e){
  var value = e.target.value

  var options = {
      maximumFractionDigits : 2,
      currency              : currency,
      style                 : "currency",
      currencyDisplay       : "symbol"
  }
  
  e.target.value = value 
    ? localStringToNumber(value).toLocaleString(undefined, options)
    : ''
}



$(function () {
  $('#SendNewFixedEmployeeForm').parsley().on('field:validated', function() {
    var ok = $('.parsley-error').length === 0;
    $('.bs-callout-info').toggleClass('hidden', !ok);
    $('.bs-callout-warning').toggleClass('hidden', ok);
  })
  .on('form:submit', function() {
    return true;
  });
});
<link href="http://parsleyjs.org/src/parsley.css" rel="stylesheet"/>

<form id="SendForm" action="#" method="post" class="demo-form" data-parsley-validate="" data-parsley-excluded="input[type=button], input[type=submit], input[type=reset], input[type=hidden], [disabled], :hidden">
<input type='digits' class="maxLength form-control" width="400" value="0" name="CurrencyField" id="CurrencyField" aria-describedby="basic-addon2" data-parsley-type="digits" data-parsley-length="[5,6]" data-parsley-errors-container="#Sallary-errors" required/>

<button type="submit" form="SendForm">Submit</button>

</form>

<script src="http://parsleyjs.org/dist/parsley.min.js"></script>
<script src="https://cdpn.io/cp/internal/boomboom/pen.js?key=pen.js-4eb31870-42c1-91aa-5c3e-9c5b016d4ea4" crossorigin></script>

null


共1个答案

匿名用户

使用data-passley-lengthdata-passley-min代替data-passley-max