【问题标题】:jQuery dialog box not staying visible after an if/else in javascriptjQuery 对话框在 javascript 中的 if/else 之后不保持可见
【发布时间】:2013-09-02 21:59:42
【问题描述】:

从一个简单的 html 页面,用户点击一个显示“添加问题”的按钮。

点击“点击”会弹出一个 jQuery 对话框,其中包含一个“隐藏”在原始页面上的表格(显示:无)。

用户在 jQuery 对话框的输入字段中输入一个“数字”(对于那些熟悉医疗代码的人来说,icd-9 代码)。

当用户单击 .dialog 按钮时,会读取、修剪数字并将其发送到 if/else 的第一部分。

如果数字小于 3 个字符,则会在 div 中显示一条消息,显示“这不是有效的 icd-9 代码”。

(如果它是有效的,我会做一个 .ajax 调用来查看是否有相应的 icd-9,如果没有给出消息“No icd-9”或给出 icd-9 代码和 icd- 9 文本)

所有第一部分工作正常,除了在发布“错误”消息后,用户立即(我几乎看不到消息 - 我发出警报以停止流程并确认消息在那里)带回原始 html 页面,而不是 .dialog。

这里是有问题的代码:

$("#findbuttonicd9").click(function() {

    varicd9 = document.getElementById('icd9input').value;
    varicd9 = varicd9.trim();

    if (varicd9.length < 3)
       {
        document.getElementById("listicd9").innerHTML = varicd9 + "is not a valid ICD-9 Code";
        return;
       }
         else
       {$.ajax({
                type: "POST",
                url: readicd9backend.php,
                data: {icd9: varicd},
                dataType : 'json', 
                              success: function(result)
                                       {
                                        $("#div1").html("");
                                        if(result.length >= 1)
                                           {
                                            var output = "<table width='500px' class = 'findtable'>";
                                           $.each(result, function(index, value)
                                                 { output += "<tr><td id='icd9' width='50px'>" + value.icd9codedot +
                                                             "</td><td width='250px' style='text-align:left'>" + value.icd9long +
                                                             "</td></tr>";
                                             });
                                         output += "</table>";
                                         $("#listicd9").html(output);
                                     }
                                      else
                                     {$("#listicd9").html("No matches");}
              },
              error : function(e) { ("#listicd9").html('Database access error'); }
            });            
       }
});

我尝试添加一个“retun”(如您在上面看到的)并在没有“return”的情况下完成它,它总是让我回到原始的 html 页面。

这个“流控制”问题对我来说是一个新问题,所以我很感激任何帮助,即使只是一个参考,这样我就可以自己尝试解决这个问题。

再次感谢大家。

编辑: 这里是点击功能;

$("#addproblementerbutton").click(function() {
 $(function() {  $( "#addproblemtable" ).dialog({
                                                height: 550,
                                                width: 600,
                                                modal: true
                                                });
               });
});

这是整个表格:

<!--start of hidden add problem table-->
<div id="addproblemtable" style="display:none" title="Add a Problem"><!--start of add problem div/table-->
<form id="addproblem">
<table id="addproblem" class="addproblemtable">
  <tr>
    <td style="width:200px; text-align:right;">ICD-9:</td>
    <td><input id="icd9input" type="text"></td>
    <td><button id="findbuttonicd9">FIND ICD-9</button></td>
  </tr>
  <tr>
    <td style="width:200px; text-align:right;">Problem:</td>
    <td><input id="problem" type="text"></td>
    <td><button id="findbuttontext">FIND TEXT</button></td>
  </tr>
  <tr>
    <td colspan="3">
      <div id = "listicd9" style="width:100%; height:200px; overflow-y:scroll; margin-top:10px; margin-bottom:10px; background-color:#F1E2FE">
      </div>
    </td>
  </tr>
  <tr>
    <td style="width:200px; text-align:right;">Date Noted:</td>
    <td><input id="dateonset" type="text"></td>
    <td></td>
  </tr>
  <tr>
    <td style="width:200px; text-align:right;">Date Entered:</td>
    <td><input id="dateentry" type="text"></td>
    <td></td>
  </tr>
  <tr>
    <td colspan="3">
      <input type="radio" id="active" name="status" value="Active" checked="checked" />
      <label class="styleradiobutton"  for="active">Active</label></input>
      <input type="radio" id="inactive" name="status" value="Inactive" />
      <label class="styleradiobutton" for="inactive">Inactive</label></input>
    </td>
  </tr>
  <tr>
    <td colspan="3" style="width:200px; text-align:center;">
      <input id="resetbutton" type="reset" value="RESET" class="formbutton"><!--reset the form-->
      <input id="addproblemsubmitbutton" type="button" value="ADD" class="formbutton"></td>
  </tr><!--add a problem button-->
  <tr>
    <td><div id=listicd9></div></td>
  </tr>
</table>
</form>
</div><!--end of add problem div/table-->

这是您单击以启动 if/else/ajax 的 .dialog 表中的行

  <tr>
    <td style="width:200px; text-align:right;">ICD-9:</td>
    <td><input id="icd9input" type="text"></td>
    <td><button id="findbuttonicd9">FIND ICD-9</button></td>
  </tr>

PS - 我还没有完成 .ajax 调用,因为我无法通过调试中的第一个 if/else。仍在努力。

谢谢!

【问题讨论】:

  • 我能问一下这在你的 DOM 中附加到什么类型的元素吗?
  • 您的$.ajax 电话看起来有点不对劲。您可能希望将url 放在引号中(url: "readicd9backend.php",)和data: {icd9: varicd9},,除非varicd 是您在别处定义的变量。但是对于问题本身,我认为它可能只是您发布的代码之外的东西。
  • 非常好。谢谢你。我将在上面编辑我的 cmets。
  • Ooooooooooooh...我想知道“模态”是否可以这样做...可以吗?
  • 不,我将“模态”设置为 false,仍然具有相同的“特征”。

标签: javascript jquery if-statement dialog flow


【解决方案1】:

好的,我拿了你的小提琴和forked it off 来使用更多你原来的javascript。

这改变了

varicd9 = document.getElementById('testinput').value;
varicd9 = varicd9.trim();

var icd9 = $('#testinput').val();
icd9 = icd9.trim();

还有其他一些调整可以对出现的控制台错误做出反应。鉴于它是一种抽象,它可能无法完全解决您的问题。

【讨论】:

  • “e.preventDefault();”给我一个错误,但我浏览了一下并尝试了“event.preventDefault();”并且没有错误,但 .dialog 仍然消失。我启动并运行了 .ajax,最后 .dialog 消失了。
  • 很抱歉问你更多的问题,但你能根据你的问题重新创建一个 jsFiddle 吗?
  • 我非常感谢你挑战我做 jfiddle。我过去曾将它用于非常简单的事情,但我不知道它会做更复杂的事情。在这里 - 它似乎按预期工作。 jsfiddle.net/w35rF/1 - 现在我只需要弄清楚为什么我的东西不起作用。
  • 我已经进行了所有更改,但窗口仍然存在问题,因为错误或数据库调用而消失。我会继续努力,如果我找到解决方案,我会发布它。再次感谢!
【解决方案2】:

我发现问题了!!!

出于“充分的理由”(我忘记了它是什么),我将表格放在了一个 div 中。显然,表在 div 中时的行为不同(即使 div 有不同的名称)。

所以我拿走了 div,把桌子弄了一点,现在一切都很好!

对我来说,学习的重点是除非绝对必要,否则不要将内容包含在 div 中。

感谢大家的cmets和帮助!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多