0

非表示の入力フィールドで値属性を変更するのに問題があります。次の HTML を含むフォームがあります。

<input type="hidden" name="caitlinisdabomb" id="caitlinisdabomb" value="no" />

右クリックしてソースを表示しても、値は変更されていません。フォームが送信されると、ヘッダーにも誤った値が送信されます。console.log("im human " + document.getElementById("caitlinisdabomb").value) は、「im human yes」としてログに記録します。何を与える?動的に生成されたフォームのためですか?すべてのファイルはこちら: alluringassets.com/slick-contact-forms.rar

console.log("I work");
            function markAsHuman() 
            {
                $('#caitlinisdabomb').val('yes');
                //document.getElementById("caitlinisdabomb").value = 1;
                console.log("im human " + document.getElementById("caitlinisdabomb").value);
            }


            $(".slick-form").on("focus", function()  {
                markAsHuman();
            });

            $(".slick-form").on("click", function()  {
                markAsHuman();
                console.log("you clicked");
            });
4

1 に答える 1

1

.slick-form要素はいつ存在しますか? ページと一緒にロードしますか、それとも非同期でロードしますか?

つまり、あなたの例では、DOM の準備が整うのを待ちません。$(document).ready(function() { //look for elements in the dom structure });

そのため$(".slick-form")、できるだけ早く行うのはおそらく時期尚早です...デバッガーでその行にブレークポイントを設定しない限り、問題は発生しません。

非同期で行う場合は、その ajax 関数のコールバックが成功したときにクリック イベントを適用する必要があります。

通常、次のようなものです。

$.ajax({
    type: "GET",
    url: '/blah',
    data: formData,
    success: function (data) {
        // the callback, add click event now that form will exist in DOM
    }
});

または、次の例のように、それを達成する他の方法を考えてください。

jquery関数は、非同期でロードされたdom要素では機能しません

于 2013-01-24T01:34:00.540 に答える