ユーザーがクリックする回数だけ特定のフィールドを複製するオプションが必要なフォームで忙しいので、それを電子メールで送信する必要があるため、現在パスポートフィールドにいます。
唯一の問題は、私が設定した方法は、クラスが「passport」であるdiv要素ごとに入力フィールドを作成することです。したがって、フィールドIDは次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13
そして、jQueryクローンを使用する場合:
1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13
そして私がそれを必要とするもの:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
しかし、フィールドの値を評価するために、その1つの入力に関連付けられるIDの最初のセットのみを割り当てるにはどうすればよいですか。
とにかく、どんな助け/アドバイスも大いに感謝します。
ここにjsfiddleがあります:http://jsfiddle.net/dawidvdh/A5naZ/
コードは次のとおりです。
jQuery:
$(document).ready(function() {
var pass = 1;
val = 0;
jQuery('div.passport').each(function() {
var index = "pass"+pass++;
var passer = "<input class='pass' id="+'"'+index+'"'+" "+" maxlength='1' />";
var passvalue = $(this).attr('value');
jQuery(passer).appendTo('#pass');
});
$("#clone").click(function () {
$('#pass').clone().insertAfter("#pass");
});
function Validatepass() {
var passValue = '';
$('.pass').each(function(){ passValue+=($(this).val());});
jQuery('#error p').remove();
var error = jQuery('#error');
var passNumber = passValue;
var correct = true;
if (passNumber.length != 13) {
correct = false;
}
// if no error found, hide the error message
if (correct) {
jQuery('.pass').css("border","1px solid #9A8B7D");
}
// otherwise, show the error
else {
jQuery('.pass').css("border","1px solid #FF0000");
}
return false;
}
$('input.pass').keydown(function(e){
if(e.keyCode == 8){
$(this).val('');
$(this).prev().val('');
$(this).prev().focus();
Validatepass();
}
});
$('input.pass').on('keyup', function(){
if (this.value.match(/\d+/)) {
var $this = $(this);
if ($this.next('input').length) {
$this.next().focus();
} else {
Validatepass();
}
}
});
});
およびHTML:
<div id="pass"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<button id="clone">duplicate</button>