fsk33 2024-03-03 21:30 采纳率: 73.5%
浏览 4
已结题

PHP+javascript文本框之间字符串逻辑判断

本人使用PHP做了一个医学影像报告书写界面,在提交表单里需要做文本框之间的字符逻辑判断,使用了javascript,目前已存在的两个判断能正常执行(如下面代码),目前需要增加两个判断的代码:
1.性别分析:当id="性别"的text文本框中的值为“男”时,如果id="影像征象1"的textarea文本框中的字符串里包含有诸如“子宫”、“输卵管”时,alert警告提示“性别与描述不符合”,不予提交;同理,当id="性别"的text文本框中的值为“女”时,如果id="影像征象1"的textarea文本框中的字符串里包含有诸如“前列腺”、“精囊腺”时,alert警告提示“性别与描述不符合”,不予提交。
2.左右分析:当id="部位"的text文本框中的字符串中包含“左”或“右”时,如果id="诊断意见1"的textarea文本框中的字符串里包含有“右”或“左”,与部位框里矛盾时,弹出一个对话框,警告提示“描述与部位存在左右矛盾,点‘是’强制提交,点‘否’返回修改”,这个对话框不知道好不好做。

<script type="text/javascript">
function checkForm(){
//以下为判断提交表单中是否有空值,有空值则警告提示,不予提交,能正常执行。
var list = document.getElementsByTagName("input");
for (var i = 0; i < list.length; i++) {
// 判断是否为文本框
if (list[i].type == "text") {
// 判断文本框是否为空
if (list[i].value == "" || list[i].value == null ) {
alert("不能有空白输入框!");
return false;
}}}
//以下为计算ID为“部位”的文本框中的部位总数,即:如果存在多个部位,一般情况下部位之间会有标点诸如、,;等标点符号,通过计算以上标点数量,在提交表单时把计算出的部位数量存在数据库的“部位总数”字段,能正常执行。
var inputText = document.getElementById("部位").value;
var count = (inputText.match(/[、,;,;\s]/g) || []).length + 1;
document.getElementById("部位总数").value = count;
return true;
//以下需要两个字符串判断,如上述。
//......这里需要各位给予代码,谢谢!
}
</script>

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-03-03 21:41
    关注

    fsk33 晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    以下是根据你的要求给出的解决方案:

    1. 性别分析:
    • 获取性别文本框和影像征象1文本框的值。
    • 使用条件语句判断性别和影像征象1文本框的值是否满足条件。
    • 如果不满足条件,则弹出警告提示,不予提交。
    1. 左右分析:
    • 获取部位文本框和诊断意见1文本框的值。
    • 使用条件语句和正则表达式判断部位和诊断意见1文本框的值是否满足条件。
    • 如果不满足条件,则弹出一个对话框,提示矛盾情况,用户可以选择是强制提交还是返回修改。

    修改后的代码如下:

    <script type="text/javascript">
      function checkForm() {
        var gender = document.getElementById("性别").value;
        var description = document.getElementById("影像征象1").value;
        var site = document.getElementById("部位").value;
        var diagnosis = document.getElementById("诊断意见1").value;
        
        // 判断性别分析
        if (gender === "男" && (description.includes("子宫") || description.includes("输卵管"))) {
          alert("性别与描述不符合");
          return false;
        } else if (gender === "女" && (description.includes("前列腺") || description.includes("精囊腺"))) {
          alert("性别与描述不符合");
          return false;
        }
        
        // 判断左右分析
        if ((site.includes("左") || site.includes("右")) && (diagnosis.includes("右") || diagnosis.includes("左"))) {
          if (!confirm("描述与部位存在左右矛盾,是否强制提交?")) {
            return false;
          }
        }
        
        // 以下为判断提交表单中是否有空值,有空值则警告提示,不予提交
        var list = document.getElementsByTagName("input");
        for (var i = 0; i < list.length; i++) {
          if (list[i].type == "text") {
            if (list[i].value == "" || list[i].value == null ) {
              alert("不能有空白输入框!");
              return false;
            }
          }
        }
        
        // 以下为计算部位总数
        var count = (site.match(/[、,;,;\s]/g) || []).length + 1;
        document.getElementById("部位总数").value = count;
        
        return true;
      }
    </script>
    

    请注意将上面代码中的 影像征象1诊断意见1 替换为正确的元素 id。

    希望对你有所帮助!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月3日
  • 已采纳回答 3月3日
  • 创建了问题 3月3日