jQuery对话框在javascript中的if/else之后不可见



在一个简单的html页面上,用户点击一个按钮,上面写着"添加问题"。

点击后,jQuery对话框弹出,其中有一个表"隐藏"在原始页面上(显示:无)。

用户在jQuery对话框的输入字段中输入一个"数字"(熟悉医疗代码的用户可以输入icd-9代码)。

当用户单击.对话框中的按钮时,数字将被读取、修剪并发送到if/else的第一部分。

如果数字是<3个字符,在div中显示一条消息,上面写着"这不是一个有效的icd-9代码"。

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

所有的第一部分都很好,除了在发布"错误"消息后,用户会立即被带回原始的html页面,而不是对话框。

这是有问题的代码:

$("#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-->

这是.dialog表中的一行,您可以单击它来启动if/else/ajax

  <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。仍在努力。

谢谢!

好吧,我拿走了你的小提琴,并用它来使用更多的原始javascript。

这改变了

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

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

还有其他调整可以对出现的控制台错误做出反应。它可能不能完全解决你的问题,因为它是一个抽象概念。

我发现问题了!!!

出于"充分的理由"(我已经忘记它是什么了),我把表放在div中。显然,当它在div中时,表的行为会有所不同(尽管div有不同的名称)。

所以我拿走了div,把桌子装饰了一下,现在一切都很好!

对我来说,学习的重点不是把东西放在div中,除非绝对必要。

我感谢大家的评论和帮助!!

最新更新