0

ファンシーボックスを使用して1つのフォームを作成していますが、フォームは正常に機能しますが、テキストボックスから値を取得できませんでした。

私のJavaスクリプトは

$(function () {
    $("#button").click(function () {
        var yourName = $("input#yourName").val();
        alert(yourName);
        if (yourName == "") {
            $('input#yourName').css({
                backgroundColor: "#F90"
            });
            $("input#yourName").focus();
            return false;
        }

        $.ajax({
            type: "POST",
            url: "bin/form1.php",
            data: $("#login_form").serialize(),
            context: document.body,
            success: function (res) {
                var success = '<?php echo sprintf(_m('Success name % s '), "" ); ?>';
                success = success.replace(/^\s*|\s*$/g, "");
                var RegularExpression = new RegExp(success);

                if (RegularExpression.test(res)) {
                    alert('Message Sent');
                    $.fancybox.close();
                } else {
                    alert('Error While processing');
                }
            },
        });
        return false;
    });
});

今私のhtmlは

<div style="display:none; height:450px">
    <form id="login_form" action="">
        <p id="login_error">
            Please, enter data
        </p>
        <input type="hidden" name="action" value="send_friend_post" />
        <label for="yourName" style="margin-right:110px;">
            <?php _e( 'Your name', 'newcorp') ; ?>
        </label>
        <input id="yourName" type="text" name="yourName" value="" class="text_new " />
        <br/>
        <input type="submit" value="Submit" id="button" class="text_new" style="background:#930; color:#FFF; width:250px; margin-left:170px" />
    </form>
</div>

私はこの派手なボックスのポップアップを開いています

<a id="tip5" title="" href="#login_form"><?php echo "Login" ; ?></a>

yourNameすべてが正常に機能しますが、アラートが空白で表示されていても値を取得できません。

ありがとう

4

4 に答える 4

2

これの代わりに

var yourName = $("input#yourName").val();

試す

var yourName = $("input[name='yourName']:text").val();

これにより、ur関数がテキストボックスの値を読み取るようになります。

于 2012-11-09T12:19:14.987 に答える
1

まず、あなたのフォームでは、使用する方が良いはずです

$(document).on('submit', 'form', function () { ... })

それ以外の

$(document).on('click', '#myButton', function () { ... })

次に、コードをカプセル化する必要があります$(document).ready(function () { .. });

これが実際の例です;)http://jsfiddle.net/aANmv/1/

于 2012-06-19T11:02:46.157 に答える
0
  1. ポップアップを開く際に、fancybox によって Your input の ID が変更されていないことを確認します。
  2. jQuery 1.7 を使用している場合 > または jQuery 1.7 < を使用している場合は、イベントに直接追いつくのではなく、clickイベントを試してください。 liveon

live:

$("#button").live('click', function() { ... });

on:

$("#button").on('click', function() { ... });

また、DOM がロードされた後に JavaScript をロードしてみてください。

$(document).ready(function(){
    $("#button").live('click', function() { ... });
    ...
});
于 2012-06-19T10:54:55.363 に答える
-2

その代わりに

$(function() {

試す

$(document).ready() {

このようにして、ドキュメントが完全にロードされた後にのみコードが実行されることを確認できます。ああ、あなたは#yourName代わりに使うことができますinput#yourName、私が間違っていなければ、それはもっと速いはずです。

于 2012-06-19T10:50:25.057 に答える