フォーム内の特定の入力から文字列を連結し、別の入力にその文字列を入力しようとしています。以下にスクリプトを含め、jsフィドルにリンクしました。
each()の条件文内のコードは冗長すぎると思いますが、他の方法で機能させることはできないようです。任意の提案をいただければ幸いです。
var $namers = $(".namer");
$namers.on('change', function () {
var length = $namers.length - 1;
var nameString = "";
$namers.each(function (i) {
var delimiter = "";
if ($(this).find(":selected").attr('value')) {
if (i < length) delimiter = ": ";
thisVal = $(this).find(":selected").text();
nameString = nameString + thisVal + delimiter;
} else if ($(this).is("input") && $(this).val()) {
if (i < length && $(this).hasClass("from")) delimiter = "-";
thisVal = $(this).val();
nameString = nameString + thisVal + delimiter;
}
});
$("#summary").val(nameString);
});
これが私のオリジナルです:http: //jsfiddle.net/3HsQW/
そして、配列を使用して物事を改善するための最初の試みは、はるかに優れているかどうかはわかりません。 http://jsfiddle.net/3HsQW/1/