【问题标题】:Validating a dropbox to ensure users have selected a value验证 Dropbox 以确保用户选择了一个值
【发布时间】:2020-01-09 09:56:32
【问题描述】:

我正在尝试验证我的 Dropbox 以确保用户选择了测验。但是当我在 Dropbox 中选择一个不同的测验时,结果等于“1”,它会向我发出警报,但它运行不正确,它会在结果等于“0”时运行代码。

<select id="quiz" onchange="check()">
  <option value="0">Select Quiz</option>
    <?php foreach ($datas as $data) : ?>
      <option value="1"><?php echo $data['Title']; ?></option>
    <?php endforeach; ?>
</select>
<script>
  var x = false;
  function check() {
    var e = document.getElementById("quiz");
    var result = e.options[e.selectedIndex].value;
    alert(result);
    if(result = "0") {
      alert("Select a quiz");
    }else if (result = "1") {
      alert("UTM");
      x = true;
    }
  }
  function Validate() {
    if(x == true) {
      alert("UTM");
    } else {
      alert ("Please select a quiz");
    }
  }
</script>
</b>
</label>
<button type="enter" onclick="Validate()">Confirm Selection</button>

【问题讨论】:

  • 最好有运行HTML示例,请用javascript添加生成的HTML代码,不要PHP代码。

标签: javascript php validation


【解决方案1】:

如果 X = true,您的 validate 函数甚至不会读取状态,即使它已经被 onchange 修改,所以输出将始终为 false。

我建议将更改和验证功能合二为一,因为在这种情况下,相同的两个功能不相关

同样 1 = 1 也不起作用,要么使用 == 要么 ===

<select id="quiz">
<option value="0">Select Quiz</option>
<option value="1">Quiz1</option>
<option value="1">Another quiz</option>
</select>
<button type="enter" onclick="Validate()">Confirm Selection</button>

<script>
  function Validate() {
    var e = document.getElementById("quiz");
    var result = parseInt(e.options[e.selectedIndex].value);
    alert(result);
    if(result == 0) {
      alert("Select a quiz");
    }else if (result == 1) {
      alert("UTM");
      x = true;
    }
  }
 </script>

【讨论】:

    【解决方案2】:

    我认为您的代码中的 if 语句有错字。

    if(result = "0") {

    在这里,你正在做一个分配,所以这个条件总是正确的。

    你应该怎么做:

    if(result == "0") {if(parseInt(result) === 0) {

    下面的行也是如此:else if (result = "1") {

    你听说过尤达条件吗?它有助于避免那些小错误。

    https://en.wikipedia.org/wiki/Yoda_conditions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-26
      • 2023-03-18
      • 1970-01-01
      • 2010-11-11
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多