0

AJAX スクリプトを使用して PHP スクリプトにリンクするフォームがあります。これまで、PHP スクリプトに値を渡して電子メールの送信を生成するフォームを処理する送信ボタンは 1 つしかありませんでした。ここで、メールを送信するか、送信する前にメールを表示するかの 2 つのオプションをフォームに設定したいと思います。私は、AJAX/PHP スクリプトをトリガーする同じクラスの 2 つのボタンを用意するのがよいと考えています。各ボタンは異なる値を持つことができ、この値に応じて、スクリプトは異なる方法で動作する可能性があります。

2 つのボタンを使用することがこれを処理する最善の方法であるかどうかはわかりません。もしそうなら、ボタンの値を処理する方法がわかりません。クリックされたボタンの値だけが渡されますか?

私のフォームの残りの値は、次の方法で処理されます (ページに複数のフォームがあるため)。

var form_data = {
    name: $jform.find("[id^=name]").val(),
    date: $jform.find("[id^=date]").val(),
    time: $jform.find("[id^=time]").val(),
};

ボタンの値を含めるにはどうすればよいですか?次のような 2 つのボタンがあります。

echo "<button type='submit' class='submit_s' value='view'>View</button>";
echo "<button type='submit' class='submit_s' value='email'>Email</button>";

おそらく、同じ ID を持つ 2 つのボタンを持つことはできません。前に述べたように、1 つをクリックしたときに両方のボタンの値が渡されるかどうかはわかりません。

AJAXスクリプトで次のようなことができるようにしたいと思います:

if (button == 'email') {
    $jform.fadeOut(800);
}

これについて最善の方法は何ですか?

4

2 に答える 2

0

入力ボタンには別の名前を付ける必要があります。

echo "<button type='submit' name="name1" class='submit_s' value='view'>View</button>";
echo "<button type='submit' name="name2" class='submit_s' value='email'>Email</button>";

この後、フォームでこれを行うことができます

$jform.find("input[name=name1]").click(function() { 
     $jform.submit();
})

またはそのようなもの。

于 2013-02-24T12:55:35.723 に答える
0

JS 関数を使用して共通フィールドの値を設定し、押されたボタンを追跡します。

JS 関数によって設定される新しいフィールドを取得するコードを追加します。

var form_data = {
    name: $jform.find("[id^=name]").val(),
    date: $jform.find("[id^=date]").val(),
    time: $jform.find("[id^=time]").val(),
    button: $jform.find("[id^=button]").val(),
};

非表示フィールドの値を設定する新しい JS 関数:

function setHiddenButtonValue(buttonValue)
{
    $("#button").value = buttonValue;
    return true;
}

onclick イベントをボタンに追加して、クリックすると隠しフィールドが更新されるようにします。新しい隠しフィールドも描画します。

echo "<input type='hidden' id='button' value='' />";
echo "<button type='submit' class='submit_s' value='view' onclick='return setHiddenButtonValue(this.value);'>View</button>";
echo "<button type='submit' class='submit_s' value='email' onclick='return setHiddenButtonValue(this.value);'>Email</button>";
于 2013-02-24T13:16:45.643 に答える