Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery。单击变量并更改元素引用?_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript Jquery。单击变量并更改元素引用?

Javascript Jquery。单击变量并更改元素引用?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我有这个JavaScript代码。它似乎在每一个方面都起作用,只有一个例外。此脚本用于一个小型时钟应用程序。在主页上,一些PHP决定是显示“开始”按钮、“停止”按钮,还是显示文本区域,以根据数据库中的某些信息记录时间段内完成的工作 此JS代码旨在向PHP文件发送AJAX请求,PHP文件根据当前可见的输入操作DB。如果PHP脚本没有返回错误,JS应该从DOM中删除当前输入,并将与循环中的下一步相关联的输入添加到DOM中 我认为这里的问题是,在currentSubmit的初始元素引用发生更改后,jQ

我有这个JavaScript代码。它似乎在每一个方面都起作用,只有一个例外。此脚本用于一个小型时钟应用程序。在主页上,一些PHP决定是显示“开始”按钮、“停止”按钮,还是显示文本区域,以根据数据库中的某些信息记录时间段内完成的工作

此JS代码旨在向PHP文件发送AJAX请求,PHP文件根据当前可见的输入操作DB。如果PHP脚本没有返回错误,JS应该从DOM中删除当前输入,并将与循环中的下一步相关联的输入添加到DOM中

我认为这里的问题是,在
currentSubmit
的初始元素引用发生更改后,jQuery的
.click()
功能没有触发

我可能错了,但不管是什么问题,我该如何回避呢

if($('input[name="timeclock_input"]').length == 0) {
  var currentSubmit = $('input[name="submit_record"]');
} else {
  var currentSubmit = $('input[name="timeclock_input"]');
}
var inputValueArray = [
  "Start Timeclock",
  "Stop Timeclock",
  "Add Record"
];
currentSubmit.click(function() {
  if (currentSubmit.val() == inputValueArray[0]) {
    $.post( "php/record.php", { action: "start" })
      .done(function( data ) {
    if (data == "success") {
      $('input[name="timeclock_input"]').replaceWith('<input type="button" name="timeclock_input" value="Stop Timeclock" />');
      currentSubmit = $('input[name="timeclock_input"]');
    } else {
      alert(data);
    }
      });
  } else if (currentSubmit.val() == inputValueArray[1]) {
    $.post( "php/record.php", { action: "stop" })
      .done(function( data ) {
    if (data == "success") {
      $('input[name="timeclock_input"]').replaceWith('<div id="record-container"><textarea name="timeclock_input" placeholder="Description of Work Completed"></textarea><br /><input type="button" name="submit_record" value="Add Record" /></div>');
      currentSubmit = $('input[name="submit_record"]');
    } else {
      alert(data);
    }
      });
  } else if (currentSubmit.val() == inputValueArray[2]) {
    $.post( "php/record.php", { action: "record" })
      .done(function( data ) {
    if (data == "success") {
      $('#record-container').replaceWith('<input type="button" name="timeclock_input" value="Stop Timeclock" />');
      currentSubmit = $('input[name="timeclock_input"]');
    } else {
      alert(data);
    }
      });
  }
});
if($('input[name=“timeclock\u input”])。长度==0){
var currentSubmit=$('input[name=“submit_record”]”);
}否则{
var currentSubmit=$('input[name=“timeclock_input”]);
}
变量inputValueArray=[
“启动时钟”,
“停止计时钟”,
“添加记录”
];
currentSubmit.click(函数(){
如果(currentSubmit.val()==inputValueArray[0]){
$.post(“php/record.php”,{action:“start”})
.完成(功能(数据){
如果(数据=“成功”){
$('input[name=“timeclock\u input”]')。替换为(“”);
currentSubmit=$('input[name=“timeclock_input”]);
}否则{
警报(数据);
}
});
}else if(currentSubmit.val()==inputValueArray[1]){
$.post(“php/record.php”,{action:“stop”})
.完成(功能(数据){
如果(数据=“成功”){
$('input[name=“timeclock_input”]')。替换为('
'); currentSubmit=$('input[name=“submit_record”]”); }否则{ 警报(数据); } }); }else if(currentSubmit.val()==inputValueArray[2]){ $.post(“php/record.php”,{action:“record”}) .完成(功能(数据){ 如果(数据=“成功”){ $(“#记录容器”)。替换为(“”); currentSubmit=$('input[name=“timeclock_input”]); }否则{ 警报(数据); } }); } });
我找到了问题的答案。解决方案是像这样使用事件委派

$('#input-container').on( "click", "input", function() {
     Other Code Here...
});

您有3个不同的按钮,可以执行三种不同的操作。我将为每个按钮分配一个单独的
$。单击(function(){…})
。页面加载时,默认(第一个)按钮应可见(
$.show()
),另外两个按钮应隐藏(
$.hide()
)。然后在每个
if(data==“success”){…}
部分中,单击当前按钮和下一个按钮。

实际上,我是故意这样做的。真的,所有这些按钮实际上做着完全相同的事情。这相当于使用不同的参数执行函数。添加三个不同的
.click()
函数似乎违反了DRY原则。此外,我将它们从DOM中删除,而不是简单地隐藏元素,以阻止客户端的一些JS程序员违反预期发生的事件顺序。