2

私は奇妙な動作で立ち往生しています:フォーム$().serialize()メソッドの1つが機能しません(空の文字列を返します)。Opera のみ (Linux 12.16)。Android の Chromium、FF、Opera で正常に動作します。

フォームは

<form id="new-story-form" role="form" >
    <div class="form-group">
        <label for="txt-storyname" class="control-label">Story name</label>
        <input type="text" name="name" class="form-control" id="txt-storyname" required="required">
    </div>
    <div class="form-group">
        <label for="num-storylength" class="control-label">Story length</label>
        <input type="number" name="length" class="form-control" id="num-storylength" value="20" min="10" max="500" required="required">
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-default">Начать</button>
    </div>
</form>

送信用の Javascript は次のとおりです。

        $("#new-story-form").submit(function (e) {
            e.preventDefault();
            var post_data = $(this).serialize();
            console.log(post_data);

            $.post("/post", post_data ,function (data) {
                console.log(data);
                show_message("S", 'success');
                var update = setTimeout(function () {
                    location.reload();
                }, 1000);

            }).fail(function (err) {
                        $.each(err.responseJSON, function (index, value) {
                            console.log(index, value);
                            show_message(index + ' - ' + value, 'danger');
                        });

                    });
        });

var post_data = $(this).serialize();Operaデバッガーで見ると、$(this)通常のフォームオブジェクトが含まれていますがpost_data"".

ここで見逃すことができるものはありますか?

4

1 に答える 1

3

入力の名前 " length" に問題があるようです。別の名前を選択してください。

フォームの組み込みプロパティ「長さ」との競合だと思います。

jQuery ドキュメントに注意事項があります。 フォームとその子要素は、送信、長さ、メソッドなど、フォームのプロパティと競合する入力名または ID を使用しないでください。名前の競合により、混乱を招く障害が発生する可能性があります。

于 2013-11-08T22:15:46.277 に答える