我可以调用 JS 函数吗?如何调用?

Can I call JS function and how?

Okey社区,

function validate() {
  var name = document.getElementById("name").value;
  var p = document.getElementById("pname");
  
  console.log("validating");  // added by PM-77-1

  if (name === null) {
    p.className += " show";
    return false;
  } else {
    return true;
  }
}
.split {
  height: 100%;
  position: fixed;
  top: 0;
}

.left {
  left: 0;
  width: 40%;
}

.right {
  right: 0;
  width: 60%;
}

.form {
  margin: 30% 5% 30% 5%;
}

.input {
  margin: 2% 2% 2% 2%;
  height: 40px;
  width: 35%;
}

.lower {
  width: 76%;
}

h6 {
  background-color: #3399ff;
  margin-top: 0px;
  min-height: 50px;
  max-height: 50px;
  font-size: 32px;
  color: white;
}

button {
  background-color: #3399ff;
  color: white;
  width: 77%;
  min-height: 50px;
  border: none;
  border-radius: 5px;
  margin-top: 10%;
}

body {
  font-family: Futura Md BT;
}

#map_canvas {
  height: 100%;
}

.name {
  display: none;
}

.lastname {
  display: none;
}

.address {
  display: none;
}

.city {
  display: none;
}

.country {
  display: none;
}

.show {
  display: block;
  margin-top: 0px;
  margin-bottom: 0px;
  color: red;
}
<div class="split left">
  <center>
    <h6>User Details</h6>
    <div class="form">
      <form action="input.php" method="POST" onsubmit="event.preventDefault(); validate()">
        <p class="name" id="pname">Please enter First Name</p>
        <p class="lastname" id="lastname">Please enter Last Name</p>
        <p class="address" id="address">Please enter Street / Number</p>
        <p class="city" id="city">Please enter City</p>
        <p class="country" id="country">Please enter country</p>
        <input type="text" class="input" id="name" name="firstname" placeholder="First Name">
        <input type="text" class="input" id="lastname" name="lastname" placeholder="Last Name"><br>
        <input type="text" class="input lower" id="address" name="streetnumber" placeholder="Street / Number"><br>
        <input type="text" class="input lower" id="city" name="city" placeholder="City"><br>
        <input type="text" class="input lower" id="country" name="country" placeholder="Country"><br>
        <button type="submit" onclick="return validate()">Add User</button>
      </form>
    </div>
  </center>
</div>

请测试一下并告诉我为什么它不起作用。我尝试了一切,但不知何故我的 js 没有触发。我更改了 ID 和所有内容。另外告诉我我是否在验证默认值的表单中做对了,因为我是第一次这样做。非常感谢大家。

我使用 body onload(启动 google 地图)但我没有粘贴那部分,它工作正常。

请帮我举个例子, 非常感谢社区!!!

看起来您在 body 加载时调用了 initialize()(在您的 HTML 中),而您本应调用 validate() 函数。

onclick 不应返回任何内容,因此您可以删除 () 并只使用函数名称

<button type="submit" onclick="return validate()">Add User</button>
<!-- Should be -->
<button type="submit" onclick="validate">Add User</button>

此外,您在检查 null 时应该检查空字符串

if (name === null) { ... }
// Should be
if (name === '') { ... }
  • 首先,在您的标记正文中,您正在调用一个您未定义的函数。
  • 其次,在您的 onclick 表格中,您在 return functionCall() 中放置了刚好需要的功能。没有 return.
  • 这个词
  • 第三,不知道你有没有看到,你的HTML很多ID重复,当你只能有1个ID(这就是为什么叫ID)
  • 最后,我建议将您的函数验证更改为如下内容:
function validate() {
    console.log("eslloooooooo")
    var name = document.querySelector("#name").value;
    var p = document.querySelector("#pname");

    if (name.innerHTML === '') {
        p.classList.add("show");
    }
}

I recommend it cause first, you can use a querySelector that uses CSS selectors and also you can use the option classList of your node to add a class to your item.

希望对您有所帮助

您的函数 validate 调用正常,但其中的一些语句执行得不是很好。这里有几个问题:

1- 要向元素 p 添加 class,请使用 p.classList.add("className")

2- 当用户将名称字段留空时,该值为空字符串 (''),而不是空值。所以,而不是检查:

if (name === null)

改为检查:

if(name == '')

//or, even shorter:
if(!name)

因此,JS 变为:

function validate() {
  var name = document.getElementById("name").value;
  var p = document.getElementById("pname");

  console.log("validating");

  if (!name) {
    p.classList.add( "show");
    return false;
  } else {
    return true;
  }
}