2012-04-11 17 views
0

我有两个JS脚本。 一个是用于检查形式的校正项(后点击“注册”按钮):检查表格的更正条目,输入错误时,显示div几秒钟

 Zikula.Users.NewUser.setup = function() { 
      Zikula.Users.NewUser.formId = '{{$formData->getFormId()}}'; 

      Zikula.Users.NewUser.fieldId = { 
       submit:   '{{$formData->getFormId()}}_submitnewuser', 
       checkUser:  '{{$formData->getFormId()}}_checkuserajax', 
       checkMessage: '{{$formData->getFormId()}}_checkmessage', 
       validMessage: '{{$formData->getFormId()}}_validmessage', 

       userName:  '{{$formData->getFieldId('uname')}}', 
       email:   '{{$formData->getFieldId('email')}}', 
      }; 
     } 

而当一些条目是错误的,则存在所示的div(警告消息)。我想在一段时间后隐藏这个div,例如与此JS:

 var timePeriodInMs = 5000; 
     setTimeout(function() 
     { 
     document.getElementById("mydiv").style.display = "none"; 
     }, 
     timePeriodInMs); 

我知道第二个必须是当第一个被加载(上一个按钮,用户点击)莫名其妙一起执行,但我不知道如何加入他们的行列。任何人都可以帮忙吗?

UPDATE:

登记按钮具有这样种代码:

{按钮ID = $ formData-> getFormId()|猫: '_ submitnewuser' 类型= '图像' SRC =“btn_register.png 'set ='图标/ extrasmall'}

非常感谢。 Martin

+0

我不熟悉您正在使用的语法,但我假设你有码的地方,** **显示的股利,对不对?为什么不能在显示div之后立即执行'setTimeout'?至于淡出div,有很多方法可以实现这一点。你可以使用'setInterval'或者'setTimeout'递归函数(并且稳定地减少div的alpha),或者使用jQuery的[fadeOut](http://api.jquery.com/fadeOut/)函数。 – Travesty3 2012-04-11 18:26:22

回答

0

可能存在您的问题中缺少关键信息,但假设没有,此答案应该有所帮助。

将第二段代码包装在一个函数中,然后从处理相应事件的代码中调用它。事情是这样的:

Zikula.Users.NewUser.setup = function() { 
    Zikula.Users.NewUser.formId = '{{$formData->getFormId()}}'; 

    Zikula.Users.NewUser.fieldId = { 
     submit:   '{{$formData->getFormId()}}_submitnewuser', 
     checkUser:  '{{$formData->getFormId()}}_checkuserajax', 
     checkMessage: '{{$formData->getFormId()}}_checkmessage', 
     validMessage: '{{$formData->getFormId()}}_validmessage', 

     userName:  '{{$formData->getFieldId('uname')}}', 
     email:   '{{$formData->getFieldId('email')}}', 
    }; 
    hideErrors(); 
} 

function hideErrors() { 
    var timePeriodInMs = 5000; 
    setTimeout(function() 
    { 
    document.getElementById("mydiv").style.display = "none"; 
    }, 
    timePeriodInMs); 
} 
+0

谢谢。它可以工作,但定义的时间(5秒)在页面加载时计算正确,而不是在单击按钮后计算。我还发现这个隐藏div的解决方案并不是最好的,当有更多的div被隐藏时。有没有可能使用一些简单的淡出功能类似或以某种方式*减速*这个隐藏功能,请?再次感谢 – 2012-04-11 18:04:51

+0

我假设你有处理按钮点击的代码。将* hideErrors(); *调用移入该函数。或将* var timePeriodInMs = 5000; *(5秒)更改为您喜欢的任何数字(秒* 1000)。 – 2012-04-11 18:41:12