【问题标题】:How to call function D only after function A, B and C are done只有在函数A,B和C完成后如何调用函数D
【发布时间】:2016-04-05 19:45:48
【问题描述】:

大家好,我想知道如果功能 checkV、checkV1、checkV2 完成并且表格填写完整,是否可以调用函数“确认”。

HTML & javascript

http://pastebin.com/xY1MBhv5

function checkV() {
  var check = document.getElementById("voornaam").value;

  if (isNaN(check) || check.length == 0) {
    return true;
  } else {
    alert("In de naamvelden geen cijfers invoeren s.v.p.");
  }

};

function checkV1() {
  var check1 = document.getElementById("achternaam").value;

  if (isNaN(check1) || check1.length == 0) {
    return true;
  } else {
    alert("In de naamvelden geen cijfers invoeren s.v.p.");
  }
};

function checkV2() {
  var check2 = document.getElementById("toneelspeler").value;

  if (isNaN(check2) || check2.length == 0) {
    return true;
  } else {
    alert("In de naamvelden geen cijfers invoeren s.v.p.");
  }
};


function confirm() {
  var voorNaam = document.getElementById("voornaam").value;
  var toneelNaam = document.getElementById("toneelspeler").value;
  var achterNaam = document.getElementById("achternaam").value;

  alert("Beste " + voorNaam + " " + achterNaam + ", ontzettend bedankt voor je wens, we zullen ervoor zorgen dat            " + toneelNaam + " je wens zal ontvangen!");

};

window.onload = function() {
  document.getElementById('submit').onclick = function() {

    checkV()
    checkV1()
    checkV2()
    confirm()
  };
};
<header>
  <div id="logo">
    <a href="home.html">
      <img src="logo.png" id="home" alt="Logo van Het Imperium Theater">
    </a>
    <a href="http://www.facebook.com" target="blank">
      <img src="facebook.png" id="facebook" alt="facebook" />
    </a>
    <a href="http://www.twitter.com" target="blank">
      <img src="twitter.png" id="twitter" alt="twitter" />
    </a>
  </div>

  <nav>
    <ul>
      <li><a href="Home.html">Home</a>
      </li>
      <li><a href="Agenda.html">Agenda</a>
      </li>
      <li><a href="Het Theater.html">Het Theater</a>
      </li>
      <li><a href="Ontdek Leiden.html">Ontdek Leiden</a>
      </li>
      <li><a href="Contact.html">Contact</a>
      </li>
    </ul>
  </nav>

</header>

<div id="wrapper">

  <form id="form" name="form">
    <h1>Verstuur een wens.</h1>
    <div id="forms">
      <label for="voornaam">Voornaam:
        <input type="text" name="name" id="voornaam" placeholder="uw voornaam" name="fname" required>
      </label>
      <label for="achternaam">Achternaam:
        <input type="text" name="name" id="achternaam" placeholder="uw achternaam" name="fname" required>
      </label>
      <label for="toneelspeler">Naam toneelspeler:
        <input type="text" name="name" id="toneelspeler" placeholder="naam van de toneelspeler" name="fname" required>
      </label>
      <label for="boodschap">Uw wens:
        <textarea rows="4" cols="20" name="name" placeholder="Type hier uw wens" required></textarea>
      </label>
    </div>
    <input type="submit" value="Submit" id="submit">

  </form>

</div>

<footer>
  <a href="home.html">
    <p>Theater Imperium</p>
  </a>
  <p>Oude Vest 33e</p>
  <p>2312 XR Leiden</p>
  <p>071 5141035</p>
  <p>&copy; Arpiar Melikjan</p>

</footer>

【问题讨论】:

  • 为 checkV checkV1 和 checkV2 是否完成创建变量。默认值为 false,在这 3 个函数的末尾,将其对应的变量设置为 true。在“确认”的开头说if(checkVdone &amp;&amp; checkV2done &amp;&amp; checkV3done){[everything]}。我对验证了解不多,但您可以检查每个字段的默认值。

标签: javascript html forms function validation


【解决方案1】:

根据提供的链接,如果一切正常,checkV(), checkV1()checkV2() 将返回true,否则返回undefined。你可以这样做:

if(checkV() && checkV1() && checkV2())
    //Do submit

编辑:

如果您想更好地控制您的控制流(这可能有助于调试),您可以执行以下操作:

if(checkV()) {
    if(checkV1()) {
        if(checkV2()) {
            //Do submit
        }
    }
}

现在,您可以关联else 块,并可以根据验证输入失败的方法采取措施。

【讨论】:

  • 如果您需要知道哪个函数返回false,那将很难调试和维护。嵌套函数看起来很酷,但它不是。
  • 我还有一个问题,当一个数字被填写时,我收到一个提示,说你不能填写数字,这是正确的。但例如,当我填写“hey12”时,该函数会验证它是否正确。因此,当填写一个数字时,结合一个字符,验证是正确的,而它不应该是正确的。
  • 为此,您可以针对正则表达式对其进行测试,如下所示:if( /^([^0-9]*)$/.test('hey12') ) {}
猜你喜欢
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多