.show()。hide()无法在FIREFOX中工作,在IE中工作

时间:2012-05-02 15:21:39

标签: jquery html hide show

我正在使用2个输入字段,第一个是真实的,另一个是隐藏的,就在它后面,使用position:fixed;,当用户提交表单时,会有一个表单验证,如果原始字段为空,隐藏输入将显示,带有红色背景,带有警报消息。这是有效的,在.show()之后使用display:none;然后我在jquery中编写了另一个代码,这使得此警报输入消失,当用户点击它时,意味着他正在尝试访问原始输入,所以他可以写入,这是有效的,使用.hide();问题是,当我再次点击提交时,警报输入没有再次显示...在Firefox中;但它在IE中工作得非常好。

这是HTML CODE:

 <div style="   padding-top:2px; overflow:hidden; float:left  ">
<div style="float:left; ">
<label for="email">
E-mail
</label> 
<br>
<div style="position:relative;">
<input class="inputtext" type="text" id="email" name="email" maxlength="32" style=" width:140px; height:15px;" tabindex=1/>
<input class="inputtext" type="text" id="emailnotification" name="emailnotification" maxlength="32" style=" width:140px; background-color: rgb(220, 20, 60); color: white; z-index:20; display:none; height:15px; font-weight: bold; position:absolute; left:0px;"/>
</div>
</div>

现在这是表单验证功能的一部分:

function validateForm()
{

    var xe;
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    var xemail=document.forms["signinForm"]["email"].value;
    if(xemail==null || xemail=="")
        {$("#emailnotification").val("Email is Required");  
        $("#emailnotification").show();

            xe=1;
        }
    else if (reg.test(xemail)==false)
        {   

            $("#emailnotification").val("Email is not Valid");
            $("#emailnotification").show();
            xe=1;
        }

现在这是隐藏它的jquery代码:

    $("#emailnotification").click ( 
function() { 
$("#emailnotification").hide(); 
$("#email").focus(); 
$("#emailnotification").blur(); 
});

2 个答案:

答案 0 :(得分:0)

我猜测问题出在var xemail=document.forms["signinForm"]["email"].value ...如果IE和FF中的xemail相同,您是否已通过警报进行检查?我认为FF和IE使用不同的形式。只是为了检查尝试给予电子邮件&#39;一个id并使用它来代替它,比如var xemail = $("#email").val()

答案 1 :(得分:0)

Works here in firefox

虽然我稍微更改了代码......

$("#emailnotification").blur();没用,因为你首先关注其他地方。

(我也使用了Rodolfo建议)