首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在firefox中删除cc卡字符、有效期和输入字段的安全码

无法在firefox中删除cc卡字符、有效期和输入字段的安全码
EN

Stack Overflow用户
提问于 2015-07-28 01:50:48
回答 1查看 113关注 0票数 1

正在开发ember应用程序。我有一张表格,上面有姓名、抄送号码、有效期和安全号码。我可以在名字上退格,但我不能删除任何其他内容,这只发生在Firefox中。

代码语言:javascript
复制
<div class="form-group cc-name input-row {{if nameValid 'has-success'}}">
  <label class="label label--sm">Name on Card</label>
  {{input type="text" value=name class="form-control"}}
</div>

<div class="form-group cc-number input-row {{if numberValid 'has-success'}}">
  <label for="cc-number" class="label label--sm">Credit Card Number</label>
  {{input-credit-card-number number=number class="form-control"}}
  <div class="card-type {{if type 'show' 'hide'}}">
    {{#if type}}
      {{inline-svg type class="icon icon--credit-card"}}
    {{/if}}
  </div>
</div>

<div class="input-row input-row--inline">
  <div class="form-group cc-expiration input-col--50 {{if expirationValid 'has-success'}}">
    <label class="control-label label--sm">Expiration</label>
    {{input-credit-card-expiration month=month year=year class="form-control"}}
  </div>

  <div class="form-group cc-cvc input-col--50 {{if cvcValid 'has-success'}}">
    <label class="control-label label--sm">Security Code</label>
    {{input-credit-card-cvc cvc=cvc class="form-control"}}
  </div>
</div>

这是我需要覆盖的代码:

代码语言:javascript
复制
import Ember from 'ember';
import hasTextSelected from 'ember-credit-cards/utils/has-text-selected';
import formatters from 'ember-credit-cards/utils/formatters';
import cards from 'ember-credit-cards/utils/cards';

var cardFromNumber = cards.fromNumber;
var computed = Ember.computed;

function inputValid(value) {
  value = (value + '').replace(/\D/g, '');

  var card = cardFromNumber(value);

  if (card) {
    return value.length <= card.length[card.length.length - 1];
  } else {
    return value.length <= 16;
  }
}


export default Ember.TextField.extend({
 classNames: ['input-credit-card-number'],
 placeholder: '•••• •••• •••• ••••',
 autocomplete: 'cc-number',
 type: 'tel',

 keyPress: function(e) {
   var digit = String.fromCharCode(e.which);
   console.log(digit);
   if (!/^\d+$/.test(digit)) {
     return false;
   }

   var el = this.$();
   if (hasTextSelected(el)) {
     return true;
   }

   var value = el.val() + digit;
   return inputValid(value);
   console.log(value);
 },

 value: computed('number', function(key, value) {
   var number = this.get('number');

   if (arguments.length > 1) {
     number = value;
     this.set('number', value);
   }

    return formatters.formatNumber(number);
  })

});
EN

回答 1

Stack Overflow用户

发布于 2015-07-29 01:22:28

下面的代码适用于我:

代码语言:javascript
复制
export default Ember.TextField.extend({
 classNames: ['input-credit-card-number'],
 placeholder: '•••• •••• •••• ••••',
 autocomplete: 'cc-number',
 type: 'tel',


keyPress: function(e) {

  if (e.keyCode == 46 || e.keyCode == 8 || e.keyCode == 9 || e.keyCode == 27 || e.keyCode == 13){
    return true;
  }

   var digit = String.fromCharCode(e.which);
   if (!/^\d+$/.test(digit)) {
     return false;
   }
      var el = this.$();
   if (hasTextSelected(el)) {
     return true;
   }

   var value = el.val() + digit;
   return inputValid(value);
   console.log(value);
 },

 value: computed('number', function(key, value) {
   var number = this.get('number');

   if (arguments.length > 1) {
     number = value;
     this.set('number', value);
   }

    return formatters.formatNumber(number);
  })

});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31659911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档