Php Jquery val()不重新检查/重新计算该值

Php Jquery val()不重新检查/重新计算该值,php,jquery,Php,Jquery,简短描述 我正在使用jquery、jqueryUI和ajax 我使用val()在字段第一次完美执行时从字段中获取值 但如果我更改字段中的值,该值将保持不变 长描述 我正在开发一个大项目我在这个项目上有2年的时间 我的头在抽动!;) 我有这样的想法: 这是div的html: <div id="add_task_diag" style="display: none"> <label for="task">Task : </label><input id

简短描述 我正在使用jquery、jqueryUI和ajax

我使用val()在字段第一次完美执行时从字段中获取值 但如果我更改字段中的值,该值将保持不变

长描述 我正在开发一个大项目我在这个项目上有2年的时间 我的头在抽动!;)

我有这样的想法:

这是div的html:

<div id="add_task_diag" style="display: none">
   <label for="task">Task : </label><input id="taskfrm" label="Task" value="task" name="taskval" placeholder="e.g fill in tax form" />
   <button value="submit" class="btn btn-large add_task_frm">Add task</button> <button class="btn btn-large cancel_add_task">Cancel</button>
</div>
<button class="btn btn-primary" id="add_task"><i class="icon-file icon-white"></i> Add Todo</button>

任务:
添加任务取消
添加待办事项
以下是脚本:

<script>
$(".add_task_frm").click(function() {
    function taskgen() {
        var data = "task=" + $("#taskfrm").val();
        alert(data); // only for debuging
        var task_data = data;
        alert(task_data); // only for debuging
        $.post("whereitneedtogo.php?task=action80", task_data), //this is the ajax part
        $("#add_task_diag").dialog("destroy"); // I had here close I changed it to "destroy"
        task_data = undefined; //I tried to unset the variable
    }
    taskgen();
});​
</script>

$(“.add_task_frm”)。单击(函数(){
函数taskgen(){
var data=“task=”+$(“#taskfrm”).val();
警报(数据);//仅用于调试
var任务_数据=数据;
警报(任务_数据);//仅用于调试
$.post(“whereitneedtogo.php?task=action80”,task\u data),//这是ajax部分
$(#add#task_diag”).dialog(“destroy”)//我关闭了这里,我把它改为“destroy”
task_data=undefined;//我试图取消设置变量
}
taskgen();
});​
当我运行它时,一切正常!当我用另一个值重新发送时,变量保持不变。e、 g如果我将test123放在second测试的字段中,它将保持test123 我需要重新加载页面以重置变量

我不想使用location.reload()

这个文件有1700多行,但这就是问题所在

我试过很多东西,比如: -在Dom就绪后设置脚本 -将我的变量设置为未定义或空 -销毁jquery选项卡 -唯一适合我的部分似乎是location.reload,但我的应用程序完全是ajax


感谢您的帮助,我希望这是一个愚蠢或简单的问题。

为什么每次单击时都要声明并调用该函数。。尝试将其移到click事件处理程序之外

<script>
$(".add_task_frm").click(function() {
    taskgen();
});​

function taskgen() {
        var data = "task=" + $("#taskfrm").val();
        alert(data); // only for debuging
        var task_data = data;
        alert(task_data); // only for debuging
        $.post("whereitneedtogo.php?task=action80", task_data), //this is the ajax part
        $("#add_task_diag").dialog("destroy"); // I had here close I changed it to "destroy"
        task_data = undefined; //I tried to unset the variable
    }

</script>

$(“.add_task_frm”)。单击(函数(){
taskgen();
});​
函数taskgen(){
var data=“task=”+$(“#taskfrm”).val();
警报(数据);//仅用于调试
var任务_数据=数据;
警报(任务_数据);//仅用于调试
$.post(“whereitneedtogo.php?task=action80”,task\u data),//这是ajax部分
$(#add#task_diag”).dialog(“destroy”)//我关闭了这里,我把它改为“destroy”
task_data=undefined;//我试图取消设置变量
}

当您想从其他位置调用taskgen()时,也可能会遇到范围问题。

这是因为您在单击处理程序中定义了闭包。将
taskgen
函数移到click处理程序之外,将所有内容包装在
$(document).ready()
中,您就可以开始了!见下文:

$(document).ready(function() {

    $(".add_task_frm").click(function() {
       taskgen();
    });

    function taskgen() {
       var data = "task=" + $("#taskfrm").val();

       alert(data); // only for debuging
       var task_data = data;
       alert(task_data); // only for debuging
       $.post("whereitneedtogo.php?task=action80", task_data), //this is the ajax part
       $("#add_task_diag").dialog("close").dialog("destroy"); // I usually chain 'close' and 'destroy'
    }

});

您是否尝试将函数声明移到click事件处理程序之外?@Philipp这是最肯定的答案它对我来说是正确的。每次我单击todo按钮,文本框中的任何值都会得到正确的警报。Philip否我直到现在才尝试。。。。。你看到了非常愚蠢的一个,但是大量的编码让我看不见东西。。。谢谢你,我的朋友!丹尼尔,谢谢!谢谢你的提示,摧毁和关闭!