2011-11-28 58 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做什麼。但如果您填寫了表單元素元素的操作標籤,表單將會提交。