0

私たちのアプリでは、最近改良された GUI スタイルを採用しました。当初、フォーム送信リンクは次のようなものでした。

<input type=submit class="some-style" name="Command" value="Save" />

ただし、代わりに次のものを使用しようとしています。

<input id='hiddenSaver' type="hidden" name="Command" value="Save" />
<a id='saveButton' href="#" class="some-style"><i class="some-icon"></i> Save</a>

<!-- SNIP: Extraneous other stuff -->

<script>
var $saveButton = $('saveButton'),
    $hiddenSaver = $('hiddenSaver');

$(document).ready(function () {
  $saveButton.click(function () {
    $saveButton.preventDefault();
    $hiddenSaver.submit();
  });
});
</script>

しかし、私たちのフォームは送信しません...実際、何もしません。何が欠けていますか?

4

3 に答える 3

1

.submit()フォームではなく入力フィールドでを呼び出しています。以下は、jQuery ドキュメントからの抜粋です。

submit イベントは、ユーザーがフォームを送信しようとしたときに要素に送信されます。<form>要素にのみアタッチできます。<input type="submit">明示的な、<input type="image">、またはをクリックするか<button type="submit">、特定のフォーム要素にフォーカスがあるときに Enter キーを押すと、フォームを送信できます。

.submit()ここについては、jQuery API ページを参照してください。

jQuery.Submit()

.submit()送信するフォームに を添付してみてください。また、フォームを送信するために推奨される入力はありません。アンカータグでできるかどうかわかりません。あなたは確かに使用できます:

<button type="submit">Submit</button>

あなたが新しい GUI を使用していることは知っていますが、いくつかの CSS スタイルを使用すると、ボタンをかなり見栄えよくすることができます。

お役に立てれば。

于 2013-02-01T17:43:37.100 に答える
1

ID セレクターを正しく使用しておらず#、セレクターの前の IDを見逃しています。

var $saveButton = $('#saveButton'),
$hiddenSaver = $('#hiddenSaver');

ボタンではなくフォームオブジェクトでsubmitを呼び出す

$hiddenSaver.closest('form').submit();

または

$hiddenSaver = $('hiddenSaver').closest("form");
$hiddenSaver.submit();
于 2013-02-01T17:36:39.343 に答える
1

この回答は、実際のデモを含め、投稿された元の質問を完全に解決します...

タイトル:「a hrefタグで投稿」

次のようなコードのいくつかの問題...

1) jQuery ID セレクターに#記号がありませんでした。

2) イベント変数e.preventDefault()usingfunction(e)およびusing に渡すのに失敗しましたe.preventDefault()

3)要素ではなく、それ自体にsubmit()関連付けられます。forminput

以下のコードを修正しました。

<form id="myform">
    <input id='hiddenSaver' type="hidden" name="Command" value="Save" />
</form>

<a id='saveButton' href="#" class="some-style"><i class="some-icon"></i> Save</a>

<!-- SNIP: Extraneous other stuff -->

<script>
var $saveButton = $('#saveButton'),
    $hiddenSaver = $('#hiddenSaver'),
    $myform = $('#myform');

$(document).ready(function() {
    $saveButton.click(function(e) {
        e.preventDefault();
        $myform.submit();
    });
});
</script>

実際のデモ: http://jsfiddle.net/sBueS/

jQuery Validate プラグインを jsFiddle に含めたのはsubmit()、アンカー タグによってトリガーされたイベントを使用してフォームが実際に送信されたことを証明するためだけ<a>です。

于 2013-02-01T17:51:20.443 に答える