2011-11-28 39 views
0

我已经使用JavaScript验证下面的代码,返回true或false取决于条件的JavaScript还真不工作

的JavaScript块

function fnval() 
{ 
if(document.field.value == "") 
{ 
    alert("Invalid value"); 
    return false; 
}else{ 
    return true; 
} 
} 

这里是我的HTML:

<Input type=submit name="sub" onClick="return fnval()"> 

因此,js块检查是否输入字段值。如果没有,它会抛出一条警告消息并返回false,因此表单不会被提交。
但是,如果值不为空,它将返回true,并且仍然不会提交表单。

我已经看到一些人询问,其中返回错误的结果提交表单。但是,这完全是相反的,目前还无法找到解决方案。
任何人都可以帮助我吗?

+5

您的''元素在'

'元素内吗? –

+0

而你不会“抛出”警告信息;) –

+1

你应该看看使用jQuery。它是一个用于处理页面元素的JavaScript库,就像你在这里试图做的一样。我不确定'document.field'应该返回什么。看看jquery,它非常容易,它的跨浏览器兼容。 –

回答

-1

语法错误:

type="submit" 

type=submit 
+3

浏览器对此没有任何问题 –

+1

实际上,没有,好或坏。 –

+0

这在HTML 4.01中有效。 (引号要求由XML添加。) – ruakh

3

尝试getElementsByName

function fnval() 
{ 
if(document.getElementsByName('field')[0].value == "") 
{ 
    alert("Invalid value"); 
    return false; 
}else{ 
    return true; 
} 
} 


getElementsByName没有IE浏览器的支持,虽然。也许:

function fnval() 
{ 
if(findInput('field')[0].value == "") 
{ 
    alert("Invalid value"); 
    return false; 
}else{ 
    return true; 
} 
} 
function findInput(name) { 
    var elements = document.getElementsByTagName('input'), 
     length = elements.length, 
     i = 0, 
     results = []; 
    for(i; i<length; i++) { 
     if (elements[i].name === name) { 
      results.push(elements[i]); 
     } 
    } 
    return results; 
} 
+0

“getElementsByName虽然没有IE支持”。它在IE9上适用于我。 – recursive

+0

@recursive,http://www.quirksmode.org/dom/w3c_core。也许他们修正了html#t125。我不知道。 – Joe

2

您需要添加表单名称和表单值。喜欢的东西:

if (document.formName.fieldName.value == "") 

举例来说,有了这样的HTML中:

<form method="post" onsubmit=""> 
Password: <input name="password" type="text" /><br /> 
</form> 

的JS:

if (document.form.password.value == "") { 
    //empty 
} 
2

我建议的形式使用onsubmit<form ... onsubmit="return fnval()">, 尝试添加并将return false放置在您的函数的基础上。

0

不管你在js做什么。但如果您填写了表单元素元素的操作标签,表单将会提交。