Send
1
0
``なしでフォームの検証をしようとしています
tag.
Ajaxを使用するcmsプラグインの構造は、入力が ``でラップされない理由がわかりません
.
HTML:
Send
JS:
$(".feedback #done").click(function() { var flag = true; if (!$("#name").val()){ $("#name").addClass('error'); flag = false; } if (flag == true) $(".feedback").submit(); });
このコードは機能しません。
*「*なしでフォームで検証を行う方法
tag?
Ajaxはこの検証については知りません。
ありがとう。
3 Answer
2
のではなく
if (flag == true) $(".feedback").submit();
do
return flag;
「なしで送信することはできません
、ただし、click()を完了することを防止または許可できます。 これが完全なコードです。
$(".feedback #done").click(function() { var flag = true; if (!$("#name").val()){ $("#name").addClass('error'); flag = false; } //return the value of flag instead of working with submit() return flag; });
クリックイベントがfalseを返す場合、クリックがそれ以上進むのを防ぐ必要があります。 検証がどのように機能するかに応じて、フラグ変数はtrueまたはfalseになります。これにより、プロセスが進むかどうかが決まります。
0
ジョブを完了する別の方法として、 .feedback`のすべての子ノードを
`
タグを付けてから ``に対して `.submit()`を実行します
$(function () { $('.feedback').children().wrapAll(''); $('.feedback #done').click(function () { var flag = true; if (!$("#name").val()) { $("#name").addClass('error'); flag = false; } if (flag) { $("#form").submit(); return false; } }); });
0
@編集ので、私は実際に質問を読みます
jQuery 1.7を使用している場合、送信ボタンを.change()または.bind()または.on()で拡張します。 e.preventDefault()はajaxハンドラーで動作する可能性がありますか? 次のように、razzle dazzle unbind関数をチェーンします。
var some_flag_bool = false; $('#done').click( function (e) { e.preventDefault(); some_flag_bool = true; $(this).unbind('#done').submit(); //return might be considered optional return this.some_flag_bool; });
またはjQuery 1.7で次のようなものを使用して、物事を早めにキャッチします。
function validation() { if (!foo) { throw new Error("oh noz!"); } $('body').on('change', 'input', function() { validation(); });
ドキュメントの準備ができたらボタンを$ .attr( 'disabled'、 'disabled')してから、検証メソッドで$ .removeAttr( 'disabled')を実行できます
しかし、それが私だったら、ajaxハンドラーから検証メソッドを呼び出すか、jQuery.validationプラグインを使用します。