第一个脚本在单击时将文本转换为可编辑的文本字段。编辑文本后,按下提交按钮可激活第二个脚本。第二个脚本应该通过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>
答案 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()