Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript表单验证在IE-7,8浏览器中不起作用_Javascript_Html - Fatal编程技术网

Javascript表单验证在IE-7,8浏览器中不起作用

Javascript表单验证在IE-7,8浏览器中不起作用,javascript,html,Javascript,Html,我有一个网页来显示汽车对比,我正在使用javascript进行表单验证,但验证在Mozila firefox、chrome浏览器中正常工作,但在IE-7,8中不起作用 代码如下:- JS代码:- function chk(){ var b1=document.getElementById("txtbrand1").value; var m1=document.getElementById("txtmodel1").value; var v1=document.getElementById("tx

我有一个网页来显示汽车对比,我正在使用javascript进行表单验证,但验证在Mozila firefox、chrome浏览器中正常工作,但在IE-7,8中不起作用

代码如下:- JS代码:-

function chk(){
var b1=document.getElementById("txtbrand1").value;
var m1=document.getElementById("txtmodel1").value;
var v1=document.getElementById("txtvariant1").value;
var b2=document.getElementById("txtbrand2").value;
var m2=document.getElementById("txtmodel2").value;
var v2=document.getElementById("txtvariant2").value;


if(b1=='')
{
      document.getElementById('brand1_err').style.display = 'block';
      return false;
}else if(m1=='Car Model'){
    //alert('Please select car 1 model.');
    document.getElementById('model1_err').style.display = 'block';
    return false;
}else if(v1=='Car Variant'){
    //alert('Please select car 1 variant.');
    document.getElementById('variant1_err').style.display = 'block';
    return false;
}else if(b2==''){
    //alert('Please select car 2 brand.');
    document.getElementById('brand2_err').style.display = 'block';
    return false;
}else if(m2=='Car Model'){
    //alert('Please select car 2 model.');
    document.getElementById('model2_err').style.display = 'block';
    return false;
}else if(v2=='Car Variant'){
    //alert('Please select car 2 variant.');
    document.getElementById('variant2_err').style.display = 'block';
    return false;
}else if(b1==b2 && m1==m2 && v1==v2){
    //alert('Please select two different cars.');
    document.getElementById('samecar_err').style.display = 'block';
    return false;
}else{
return true;
}
}

表格编号:-

<form action="admin/pdf/create_result.php" method="post" name="frmcompare" id="frmcompare" onsubmit="return chk();">

表单包含6个字段Car-Name-1、Car-Brand-1、Car-varient-1、Car-Name-2、Car-Brand-2、Car-varient-2


如果您有任何解决方案,请与我共享。提前谢谢。

请尝试在按钮的
onclick
中检查,而不是表单的
onsubmit
。像这样的

<form action="admin/pdf/create_result.php" method="post" name="frmcompare" id="frmcompare">
  ...
  ...
  <input type="button" name="Compare" value="Compare" onclick="chk();">
</form>
<script>
  function chk(){
    ...
    ...
    document.getElementById("frmcompare").submit();
  }
</script>
或者,您可以将此代码放在另一个函数中,比如说
CancelSubmit()
,并更改所有这些
返回false行到
返回CancelSubmit()

而不是if(b1='')使用长度属性

if(b1.length===0)

我认为它总是进入第一个,其他验证在IE中不起作用。

什么是不起作用???控制台有错误吗?为什么用jQuery标记问题?很明显,你不是在使用itI,意思是在没有验证的情况下提交表单。所以检查验证的哪一部分失败了。你应该自己调试它,看看会发生什么如果它总是第一个
如果像你说的那样
,那么它总是返回
false
,这意味着表单永远不会被提交。这不是OP在其评论中所描述的“我的意思是未经验证就提交表格”。他所说的意思是要么达到
返回true一直,或者根本不调用
chk()
函数。@RacilHilan明白了。我的错是我不小心跳过了这一部分,但为什么它只发生在IE-7,8中呢?在其他浏览器中,它可以工作fine@CRMDevelopement如果没有看到提交按钮的代码,我无法确定,但问题不在于IE本身。这就是事件在HTML中传播的方式。返回
false
将取消按钮的
onclick
事件,但提交事件不会取消。要取消它,您需要使用
event.preventDefault
event.returnValue=false
之类的方法,但随后您会遇到浏览器兼容性问题。与其尝试支持所有浏览器,不如使用我在回答中建议的替代解决方案。它简单得多,可以在所有浏览器中使用。我刚刚在IE中试用过,效果非常好。确保您使用的是
type=button
而不是
type=submit
。如果我通过按“回车”而不是单击提交按钮来提交表单,会怎么样?@Kos将绕过验证,但您的服务器代码在所有情况下都必须再次进行验证,因此它将捕获该表单并将相应的错误返回给用户。JavaScript验证只是为了增强用户体验,而不是取代服务器验证。无论如何,如果您还想进一步增强并支持enter键,那么您必须验证表单的
onsubmit
、使用提交按钮和验证按钮的
onclick
。在这两种情况下,您都必须正确地取消事件,而不仅仅是通过
返回false
if(b1.length===0)