0

最初のスクリプトは、クリックするとテキストを編集可能なテキスト フィールドに変換します。テキストが編集された後、2 番目のスクリプトをアクティブにする送信ボタンが押されます。2 番目のスクリプトは、AJAX を介して別のページに情報を送信し、最終的にデータベースに送信する必要があります。最初の 2 つの変数 (projectID と contactType) は AJAX を介して問題なく送信されますが、updatedInfo (編集されたテキストが含まれているはずの変数) は常に空白です。私が見逃しているのはばかげていると思いますが、理解できません。2 つのスクリプトを以下に示します。

<script type="text/javascript">
    $(document).ready(function() {
        var alreadyActive = "";
        $(".editable").on("click", function () {
            if(!alreadyActive) {
                OriginalText = $(this).text();
                divValue = $(this).attr('value');
                $(this).html("<form class='edit-form' name='" + divValue + "'><input type='text' value='" + OriginalText + "' /><input type='submit' value='Update' /></form>");
                alreadyActive = "true";
            }
        });
    });
</script>
<script type="text/javascript">
    $('body').delegate('.edit-form','submit',function(e){
        e.preventDefault();
        var projectID = <?php echo $projectID ?>;
        var contactType = $(this).attr('name');
        var updatedInfo = $(this).val();

        $.ajax({
            url: 'editinplace.php?projectID=' + projectID + '&contactType=' + contactType + '&updatedInfo=' + updatedInfo,
        });
    });
</script>
4

2 に答える 2

6

フォーム内のテキスト フィールドの値を取得しようとしている場合は、次のように変更します。

var updatedInfo = $(this).val();

に:

var updatedInfo = $(this).find('input[type="text"]:first').val();

コードが行っていることは、タグ自体のvalue属性を探していることです。<form>代わりに、あなたが求めているvalueのは<input>タグにあるため、jQuery を取得してその特定のタグを調べる必要があります。

于 2012-11-09T19:56:56.613 に答える
0

実際には、フォームの「値」を取得しているように見えます

var updatedInfo = $(this).val();

「これ」(コードを正しく読んでいる場合)は、入力ではなくフォームになります。ボタンのテキストを取得するために答えている他の人が述べたように、 $(this).text() を試してください

于 2012-11-09T20:03:31.840 に答える