$ this.val()没有获得jQuery生成的表单值

时间:2012-11-09 19:53:27

标签: jquery ajax

第一个脚本在单击时将文本转换为可编辑的文本字段。编辑文本后,按下提交按钮可激活第二个脚本。第二个脚本应该通过AJAX将一些信息发送到另一个页面,最终提交到数据库中。前两个变量(projectID和contactType)通过AJAX发送就好了,但updatedInfo(应该在其中包含已编辑文本的变量)始终为空白。我认为这是一个愚蠢的东西,我想念但我无法弄明白。这两个脚本如下。

<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>

2 个答案:

答案 0 :(得分:6)

如果您尝试获取表单中文本字段的值,则需要更改:

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

为:

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

您的代码正在寻找value标记本身的<form>属性。相反,由于您所关注的value位于<input>标记中,因此您必须让jQuery查看该特定标记。

答案 1 :(得分:0)

实际上看起来你正在获得表格的“价值”

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

'this'(如果我正确地阅读代码)将是表单,而不是输入。并且像其他人一样回答获取按钮的文本尝试$(this).text()