0

作成したフォームから転送された出力をマスクしようとしていますが、うまくいかないようです。

1ページ目の入力欄

<form method="post" action="step2.php" id="form1" name="form1">  
  Enter Card Here:<input name="card"   type="text"  id="card"
  value="<?php echo $_POST["card"]; ?>"  style="width:85px;"
  class="validate[custom[card]] text-input" /> </form>

これは私が使用しているコードです

<script> var card = "<?php echo $_POST["card"]; ?>"; var str = "";
for(var i=1; i <= card.length-4; i++) {    str += "*"; }

ecard = str + card.substr(card.length-4);
$('.ccard').appendTo('ecard'); </script>

これは、出力が表示される場所です

 <label class="ccard"></label>

入力フィールドで、ユーザーは 12 桁の数字を入力する必要があります

ex: 123456789012

次に、次のように表示されます

********9012

最初の 8 桁はマスクされ、最後の 4 桁のみが表示されます。

4

2 に答える 2

1

これを試して:

var card = "123456789011";
var str = "";
for(var i=1; i <= card.length-4; i++) {
   str += "*";
}
ecard = str + card.substr(card.length-4);
console.log(ecard);

card変数は入力です。この例では、既に設定されています。

jsfiddle-example の作業 http://jsfiddle.net/fdRTR/2/

jsfiddle をラベル出力で更新 http://jsfiddle.net/fdRTR/3/

3 回目の更新、onkeyupevent の代わりにボタンを追加 http://jsfiddle.net/fdRTR/4/

例を確認し、さらにヘルプが必要な場合は返信してください。

于 2012-09-21T21:25:02.820 に答える
0

これを試して:

var card = "123456789012";
var maskLength = card.length-4;

ecard = card.replace(card.substr(0,maskLength),Array(maskLength).join('*'));

console.log(ecard);

それが何をするのかを理解したい場合:

replace(): https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace

substr(): https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substr

Array(n).join(): 文字を N 回繰り返す

于 2012-09-21T21:32:45.120 に答える