2011-03-22 51 views
0

我寫PreSaveAction(的JavaScript表單驗證):JavaScript的形式如下驗證

function PreSaveAction() { 
    var number1 = getTagFromIdentifierAndTitle("INPUT","TextField","Quantity"); 
    //var ddl1 = getTagFromIdentifierAndTitle("select","DropDownChoice","Is Product Completed"); 
    var myvar = getTagFromIdentifierAndTitle("TextArea","TextField","Description"); 
    //if (dropdown1.value == "Yes" && date1.value == "") 
    if (number1.value == "" || myvar.value === "") 
    { 
     alert("Please fill all the Required Fields"); 
     return false; // Cancel the item save process 
    } 

    if(confirm("Do you want to continue with this information?")==true) 
    { 

    alert("Successfully Submitted"); 
    return true; // OK to proceed with the save item 

    } 

    return false; 

} 

function getTagFromIdentifierAndTitle(tagName, identifier, title) { 
    var len = identifier.length; 
    var tags = document.getElementsByTagName(tagName); 

    for (var i=0; i < tags.length; i++) { 
     var tempString = tags[i].id; 
     if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) { 
      return tags[i]; 
     } 
    } 
    return null; 
} 

上面我所觀察到的是它不驗證腳本getTagFromIdentifierAndTitle功能這兩個字段在一起,我正在使用和運營商。

我是否在腳本中做錯了

請幫我解決這個問題。

在此先感謝

+1

我們需要查看'getTagFromIdentifierAndTitle'函數的代碼,或者至少知道它返回的是什麼 - 它是實際的表單元素嗎?還有你的意思是「不驗證這兩個領域」?你只填寫一個,然後進入'確認'? – 2011-03-22 15:36:07

+0

@Shadow Wizard添加完整的代碼,包括getTagFromIdentifierAndTitle函數,你是對的,我填寫一個字段仍然可以確認嗎? – Jam 2011-03-22 15:56:17

+0

看到我的答案。 :) – 2011-03-22 16:03:23

回答

1

,如果你想測試失敗如果值的要麼都是空的,你想要的或財產:||

這將確保它們都是非空的。

0
var number1 = getTagFromIdentifierAndTitle("INPUT","TextField","Quantity"); (TextBox) 

var Desc1 = getTagFromIdentifierAndTitle("TextArea","TextField","Description"); (MultiLine) 


if (number1.value == "" || Desc1.value == "") //Changed here 
    { 
     alert("Please fill all the Required Fields"); 
     return false; // Cancel the item save process 
    } 
return true; 
+0

它仍然沒有驗證多行字段 – Jam 2011-03-22 15:19:35

0
if (number1.value == "" || Desc1.value == "") 
    { 
     alert("Please fill all the Required Fields"); 
     return false; // Cancel the item save process 
    } 
return true; 

您想使用或在這裏。因爲你想成爲兩個字段集合,對吧?

if (number1.value != "" && Desc1.value != "") 

也是可能的。

正確驗證號碼:

number1.length && !isNaN(Number(number1.value)); //Number("") returns 0, not NaN 
+0

是的,我想這兩個字段都是必需的,我已經更新了頂部的完整代碼片段。我認爲第一次驗證,第二次驗證不是 – Jam 2011-03-22 15:33:36

+0

第一次第二次是什麼意思?你真的是指你在不同的跑步中得到不同的結果嗎? Like Shadow Wizard說:你應該向我們展示'getTagFromIdentifierAndTitle'。 – paztulio 2011-03-22 15:46:36

+0

已更新getTagFromIdentifierAndTitle函數 – Jam 2011-03-22 15:57:01

3

它往往是最好使用「===」而不是「==」,因爲其包括類型檢查爲好。

+1

確實,當您達到50個聲望時,請發佈評論等具體問題或答案。 :) – 2011-03-22 16:02:59

+0

@Shadow:真的,我已經適時幫助他。 :-) – 2011-03-22 16:40:20

+0

@Andrzej - 歡呼聲,還有一個去..:D – 2011-03-22 17:52:16

2

您有多個具有相同ID的元素,這隻會導致函數返回第一個元素。

具有唯一的ID爲每一個元素,然後在第二行更改爲類似:

var myvar = getTagFromIdentifierAndTitle("TextArea", "txtDescription", "Description"); 

假設你現在有id="txtDescription"到textarea元素。

另外,您可以將同一個分配給多個元素,但不能看出爲什麼不能給出不同的ID。