5秒后提交textvalue

时间:2015-06-04 09:03:42

标签: javascript html5

我对我的代码存在一个小问题。但问题要解决,我不能单独做,因为我不知道它是否出错。

我试图制作一个包含2个文本框的表单,当1个文本框已满(当文本框中没有活动5秒)时,我希望它跳到第二个文本框。同样的交易在这里,但在没有活动的5秒后,我想形成提交。

这就是我到目前为止所拥有的,我认为我得到的所有拼图只是没有任何指示将它组合在一起。

这是我到目前为止所得到的:

function checkfields()
            {
                var inhoudLocatieNummer = document.formsubmit.locatienummer.value;
                var inhoudbonnummer = document.formsubmit.bonnummer.value;

                document.formsubmit.locatienummer.focus();
                //delay(checkfields, contains, 500 );


                if (contains(inhoudbonnummer, "U") == true){
                    exceptionMessage("Uitbesteed werk!");
                }
                else{
                <!--geen uitbesteed werk dus kan op de normale manier verzondern worden-->
                    exceptionMessage("Normale bon!");
                }


            }

            var delayrec = {};
            function delay(callback, id, calldelay) {
                  clearTimeout(delayrec[id]);
                  delayrec[id] = setTimeout(callback, calldelay);
            }


            function contains(variable, value)  {
                if (variable.indexOf(value) >= 0)
                {
                    return true;
                }
            }

            function exceptionMessage(errormessage) {
                alert(errormessage);
            }

有人可以帮助我或指出我正确的方向。

我遇到的问题是文本框不等待不活动,所以一旦触发了keyup事件就会跳过。

2 个答案:

答案 0 :(得分:2)

试试这个:

var timeoutObj;

$( ":input" ).keyup(function( event ) {

    var _this = $(this);
    
    if(_this.val().length === parseInt($(this).attr("maxlength"))){              
        
        timeoutObj = setTimeout(
            function(){ 
                _this.next('input').focus();
            }, 5000);
    }else{
        clearTimeout(timeoutObj);
    }
}).keydown(function( event ) {
    //Prevent Entrer key
    if ( event.which === 13 ) {
    event.preventDefault();
  }
});
<form action="#" method="post">
    <input name="input1" id="input1" placeholder="value1"  maxlength="4"/>
    <input name="input2" id="input2" placeholder="value2"  maxlength="10"/>
    <input name="input3" id="input3" placeholder="value3" maxlength="3"/>
</form>

https://jsfiddle.net/hg1db2sp/1/

更改$(this).next('input')。focus();到AJAX提交请求。

答案 1 :(得分:1)

我更喜欢使用 jquery ,有一个函数focus()setTimeout它们很容易使用和haddle,这是JSFiddle <上的演示/ p>

Thnx!

编辑纯Javascript:

UPDATE