1


0

jquery .submit()

``なしでフォームの検証をしようとしています

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プラグインを使用します。