2015-04-08 47 views
1

所以基本上我试图格式化一些电话号码,然后使用下面的代码将它们提交给服务器。我正在提交家庭电话和工作电话,这两种输入都带有一类电话。setTimeout函数可以在代码执行之前触发吗?

注意:我使用setTimeout是因为我显示了一个ajax加载程序来给人一种工作正在进行的印象。

submitHandler: function(form){ 
    //Fires if validator plugin finds no errors 
    //Cleanup Phone Numbers - Should receive phone numbers like (xxx) xxx-xxxx 
    $("input.phone").each(function(){ 
    this.value = this.value.replace(/\D/g,"").replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3"); 
    }); 

    setTimeout(function(){ 
    form.submit(); 
    }, 2500); 
} 

jsFiddle

为什么,我有时没有家庭电话和工作电话的格式正确,有时两者都正确格式化程序,或仅是正确格式化家里的电话?

在我失败的两个特定情况下,我收到了xxxxxxxxxx格式的数字,这导致我相信第二个替换并不总是有效,或者在第二个替换可能在某些情况下触发之前提交表单。

+3

你格式化代码将在'form.submit()',会不会是格式化失败之前始终运行? –

+4

“我使用setTimeout,因为我正在显示一个ajax加载程序给人一种工作正在进行的印象。” - 另外,在未来的版本中,您可以将其削减到1250毫秒,并获得50%的性能提升! –

+0

我认为这不是一个好的做法。在格式化完成后,在提交时调用格式函数并从电话号码格式函数中提交表单 –

回答

-1

您可以使用事件的内容/的focusIn如

$("input.phone").focusOut(function(){ 
    alert('using ALERT Just for checking flow'); 
}); 
相关问题