0

特定のボタンがクリックされると、入力フィールドに値が与えられる単純なフォームがあります。問題は、ページのリロードに時間がかかり、ページを更新せずに送信したいことです。さまざまなタイプの特定の AJAX、JQuery スクリプトを適応させようとしましたが、機能しませんでした。使用する簡単なコードを誰かが提案できますか。基本的な例を次に示します。

<html>
<form method='POST' action='test2.php'>
<input type='text' name='input_a' value='<?php if($_POST['submit_a'])
{
   echo "test1";
} ?>'>

<input type='submit' name='submit_a' value='a'>
<input type='text' name='input_b' value='<?php if($_POST['submit_b'])
{
    echo "test2";
}?>'>

<input type='submit' name='submit_b' value='b'>
</form>
</html>
4

2 に答える 2

1

ajax を使用した投稿の例を次に示します (応答用にコードを調整する必要があります)。概要を説明したシナリオは、純粋に JavaScript で非常に簡単に実行できるため、投稿する必要があると思います。

$(function(){
    $('input[type="submit"]').click(function(){
         var form = $(this).parents('form');
         var postData = form.serialize();
         postData[$(this).attr('name')] = $(this).val(); // the value for the click won't be retrieved with serialize
         $.post(form.attr('action'), postData , function(data) {
             $('body').html(data);
         });
         return false;
    });
};

投稿せずに実行できる場合は、次のようになります。

$(function(){
    $('input[name="submit_a"]').click(function(){
        $('input[name="input_a"]').val('test1');
    });
    $('input[name="submit_b"]').click(function(){
        $('input[name="input_b"]').val('test2');
    });
});
于 2012-10-06T00:43:13.320 に答える
-1

ユースケースが本当に基本的なものである場合は、バニラの JavaScript のみを使用してこれを適応させました。サーバー側のアクセスが必要な場合、この解決策は役に立ちません。Ajax のしくみについて詳しく学ぶ必要があります。

HTML:

<html>
<form>
   <input type='text' name='input_a' id="input_a"/><input type='submit' name='submit_a' value="a" onclick="setInput(this, 'test1'); return false;">
   <input type='text' name='input_b' id="input_b"/><input type='submit' name='submit_b' value="b" onclick="setInput(this, 'test2'); return false;">
</form>
</html>​

Javascript:

function setInput(button, setValue) {
    var buttonVal = button.value,
        textbox = document.getElementById('input_' + buttonVal);

    textbox.value = setValue;
}​

JSFiddle で動作する例を次に示します: http://jsfiddle.net/6jpNf/1/

于 2012-10-06T00:42:04.377 に答える