仅在条件满足时使用javascript重置html表单

时间:2018-06-03 14:33:13

标签: javascript function debugging reset

我有一个代码,如果输入文本框的文本与预定义的文本不匹配,我需要重置html表单。但是,如果我使用reset()函数,即使文本与预定义文本匹配,表单也会重置。我该如何避免这个问题?这是我的代码。

    function showData() {
    var code= document.getElementById("bcno").value.trim();
    switch(code)
    {
        case "WASTE1":
        document.getElementById('display').innerHTML ="This Is Waste Type 1.";
        break;
        case "WASTE2":
        document.getElementById('display').innerHTML ="This Is Waste Type 2.";
        break;
        case "WASTE3":
        document.getElementById('display').innerHTML ="This Is Waste Type 3.";
        break;
        case "WASTE4":
        document.getElementById('display').innerHTML ="This Is Waste Type 4.";
        break;
        default:
        setTimeout(function(){document.getElementById("updateform").reset();}, 2000);
        document.getElementById('display').innerHTML ="The text does not match. Form will be reset momentarily!!.";
        break;

    }

Heres是html部分。

    <form action="dbupdate.php" method="post" id="updateform" 
     name="updateform"> 
    <label for="bcno">Item ID: </label>
    <input type="text" autofocus="autofocus" name="bcno" id="bcno" 
    oninput="showData()" autocomplete="off" /> <br /><br /> 
    <div id="display"></div> 
    <label for="ino">Quantity: </label>
    <input type="number" id="ino" name="ino" value="1" /><br /><br /> 
    <input type="button" onclick="document.updateform.submit();" 
    value="Confirm"> </form>

bcno 是文本框的ID。我究竟做错了什么?  我还使用谷歌浏览器(版本63.0.3239.132,最新版)来测试我的代码

3 个答案:

答案 0 :(得分:1)

好的,我得到了我做错的事。 我一直在文本框中使用 oninput 事件,只要字符输入到文本框中就会调用该函数。 我用 onchange 事件替换它。现在它工作正常。不管怎样,谢谢你们。

答案 1 :(得分:0)

只有在调用reset()方法时才会重置表单。总是你看到&#34;文字不匹配&#34;即使值与预定义文本匹配,也会单独打印?尝试在switch块之前放置console.log(代码)以查找从输入字段读取的值。

答案 2 :(得分:0)

使用JavaScript var myTimer; function showData() { var code = document.getElementById( 'bcno' ).value.trim().toUpperCase(), disp = document.getElementById( 'display' ); switch ( code ) { case 'W': case 'WA': case 'WAS': case 'WAST': case 'WASTE': break; case 'WASTE1': disp.innerHTML ="This Is Waste Type 1."; break; case 'WASTE2': disp.innerHTML ="This Is Waste Type 2."; break; case 'WASTE3': disp.innerHTML ="This Is Waste Type 3."; break; case 'WASTE4': disp.innerHTML ="This Is Waste Type 4."; break; default: myTimer = setTimeout( function () { document.getElementById( 'updateform' ).reset(); }, 2000 ); disp.innerHTML = 'The text does not match. Form will be reset!!.'; break; } } document.getElementById( 'updateform' ).addEventListener( 'reset', function () { clearTimeout( myTimer ) } )语句,您可以执行此操作。但使用<form action="dbupdate.php" method="post" id="updateform" name="updateform"> <label for="bcno">Item ID: </label> <input type="text" autofocus="autofocus" name="bcno" id="bcno" oninput="showData()" autocomplete="off" /> <span id="display"></span> <br> <label for="ino">Quantity: </label> <input type="number" id="ino" name="ino" value="1" /> <br /><br /> <input type="submit" value="Confirm"> </form>要好得多。

s=0
for(i=0; i<n; i++)
{
    for (j=1; j<n; j *= 2)
    {
        s=s+i*j;
    }

    s=s+1
}
s=0
for(i=0; i<n; i++)
{
    for (j=0; j<n; j++)
    {
        s=s+i*j;
    }

    s=s+1
}