0

ボタンをクリックしてフィールドを追加できるフォームを作成しました。ボタンをクリックするたびに、新しいフィールドが作成され、その後ろに大きな数字が表示されます。私はjqueryでこれを行い、phpで最大数を取得する必要があります. したがって、auto_part1 と auto_part2 がある場合、PHP で 2 を取得する必要があります。

これは私のhtmlです:

<div id="parts">
    Part
    <input type="text" id="auto_part" name="auto_part" />
                <br />
    Description
    <input type="text" id="auto_description" name="auto_description" />
                <br />
</div>
    <a href="#" id="addField">Add another part</a>

jQuery 関数:

$(function() {
var scntDiv = $('#parts');
var i = $('#parts input').size() + -1;

$('#addField').on('click', function() {
    $('<br /><span>Part</span> <input type="text" id="auto_part'+i+'" name="auto_part'+i+'" /><br />').appendTo(scntDiv);
    $('<span>Description</span> <input type="text" id="auto_description'+i+'" name="auto_description'+i+'" /> <br />').appendTo(scntDiv);
    i++;
    return false;
});

$('#remScnt').on('click', function() { 
    if( i > 2 ) {
            $(this).parents('p').remove();
            i--;
    }
    return false;
});
});
4

7 に答える 7

3

非表示の入力フィールドを作成します。

<input type="hidden" id="row_count" name="row_count" value="">

そして、次のonsubmitことを行います:

$('#row_count').val(i);
于 2013-02-01T21:41:42.987 に答える
0

HTML フォームに追加します。

<input type="hidden" id="count" value="0"/>

onclick イベントで、JavaScript を追加します。

$('#count').val(i);

次に、php で探している値をフィールド カウントの値として取得できます。

于 2013-02-01T22:04:17.337 に答える
0

追加した入力フィールドに名前を付ける方法を変更した場合はどうでしょう。使用する代わりに: auto_part + i use auto_part[]

auto_description と同じで、auto_description[] と名付けます。そうすれば、それらは配列としてphpによって認識され、配列を反復処理するだけで済みます。それはあなたのために働きますか?

于 2013-02-01T21:53:12.133 に答える
0

私が間違っていなければ、スタックオーバーフロー検索も使用してください..

ここで方法を見つけることができます..

同じページでjQuery変数をPHPに渡しますか?

于 2013-02-01T21:41:18.473 に答える
0

投稿された値の数を数えて、最大数を取得します。データを配列として投稿しましたが、そのようにする必要はありません。

$('<br /><span>Part</span> <input type="text" id="auto_part'+i+'" name="parts['+i+'][name]" /><br />').appendTo(scntDiv);
$('<span>Description</span> <input type="text" id="auto_description'+i+'" name="parts['+i+'][description]" /> <br />').appendTo(scntDiv);


$parts=isset($_POST['parts'])?$_POST['parts']:array();
$highest_number=count($parts);
于 2013-02-01T21:49:36.853 に答える
0

おそらく、これは最終的に提出されるフォームになっていますか?もしそうなら、新しい部品フィールドが追加されるたびにインクリメントされる隠しフィールドを持つことはどうですか。次に、送信されたときに、PHP はそれを取得できます。

于 2013-02-01T21:41:39.773 に答える
0

隠しフィールドを追加し ( <input type="hidden" name="added_counter" id="added_counter" value="0" />)、インクリメント/デクリメント関数でその値を維持し ( $('added_counter').val(i);)、フォーム送信の処理中に PHP を使用して隠しフィールドの値を取得します。

HTML:

<div id="parts">
    Part
    <input type="text" id="auto_part" name="auto_part" />
    <br />
    Description
    <input type="text" id="auto_description" name="auto_description" />
    <br />
</div>
<input type="hidden" name="added_counter" id="added_counter" value="0" />
<a href="#" id="addField">Add another part</a>

jQuery:

$(function() {
    var scntDiv = $('#parts');
    var i = $('#parts input').size() + -1;

    $('#addField').on('click', function() {
        $('<br /><span>Part</span> <input type="text" id="auto_part'+i+'" name="auto_part'+i+'" /><br />').appendTo(scntDiv);
        $('<span>Description</span> <input type="text" id="auto_description'+i+'" name="auto_description'+i+'" /> <br />').appendTo(scntDiv);
        i++;
        $('added_counter').val(i);
        return false;
    });

    $('#remScnt').on('click', function() { 
        if( i > 2 ) {
                $(this).parents('p').remove();
                i--;
        }
        $('added_counter').val(i);
        return false;
    });
});

その後、フォームを PHP に送信すると、PHP は新しい added_counter 非表示フィールドの値を取得できます。

于 2013-02-01T21:42:37.110 に答える