2014-11-14 23 views
0

的服務器端事件我已經提出了一種將圖像添加到頁面以供用戶反饋的方法。我已經嘗試過自己的方法,現在想反覆使用它,所以它匹配網站上的驗證。如何停止名爲

function ValidateFields(div, imgDiv) { 
var validPass = true; 

var elem = document.getElementById(div).value; 
if (elem == "") { 
    var img = document.createElement("img"); 
    img.src = "/assets/img/errorIcon.png"; 
    var src = document.getElementById(imgDiv); 
    src.appendChild(img); 
    validPass = false; 
    //document.getElementById('lbl_pdf_title').innerText = ("Please enter a title for the PDF"); 
} 
return (validPass); 
} 

當我通過傳遞它的工作原理確定正確的值使用這種方法,但現在我想用這樣的方法:

function ValidatePdf() { 
ValidateFields('txt_pdf_title', 'imgPdfError'); 

    if (!ValidateFields()) { 
     // make it false 
    } 
} 

我想使用的方法很多倍ValidatePdf()但它顯示符號然後繼續運行serverside方法。 這是我的按鈕點擊:

<button id="btn_submit_pdf" 
       runat="server" 
       class="btn btn-default" 
       title="Submit PDF" 
       onclick="if (!ValidatePdf()) return false;" 
       onserverclick="btn_submit_pdf_Click"> 
       Submit 
      </button> 

我需要另一個值傳遞給ValidateFields() 我不知所措爲什麼當你傳遞原始值,並調用它不work.But呢在按鈕上點擊的方法

+0

你爲什麼叫'ValidateFields()'用無參數?另外,如果元素不存在,'var elem = document.getElementById(div).value;'是有問題的。你檢查了你的控制檯是否有錯誤? – 2014-11-14 14:04:30

+0

您使用哪種服務器端技術? – 2014-11-14 14:07:24

回答

1

只是返回的ValidateFields結果:

function ValidatePdf() { 
    return ValidateFields('txt_pdf_title', 'imgPdfError'); 
} 

你也可以改變你的onclick到:

onclick="return ValidatePdf();" 

,以便它返回的ValidatePdf的結果,也就是現在的ValidateFields結果。

+0

只需幾秒鐘,讓我更有效的解決方案和額外的幫助。 +1。 – 2014-11-14 14:07:36

+0

我認爲這不是正確的答案:OP要驗證多個字段,並且使用此代碼是不可能的。 – 2014-11-14 14:09:16

+0

如果OP想要驗證多個字段,那麼OP應該在'ValidateFields'方法中進行驗證。這個解決方案回答了爲什麼他的'onclick'不能阻止對OP的服務器端函數的調用。另外,OP還沒有發佈任何實際的字段來驗證,所以你對什麼需要驗證的猜測與我的一樣好。 – pete 2014-11-14 14:11:52

0

方法不對,應該是:

function ValidatePdf() { 
    if (!ValidateFields('txt_pdf_title', 'imgPdfError')) { 
     // alert('not valid'); 
    } 
} 
2

對於你只需要添加一個布爾值multiplie驗證:

function ValidatePdf() { 
    var isValidate=true; 
    isValidate=isValidate && ValidateFields('txt_pdf_title', 'imgPdfError'); 
    isValidate=isValidate && ValidateFields('txt_pdf_title1', 'imgPdfError1'); 
    isValidate=isValidate && ValidateFields('txt_pdf_title2', 'imgPdfError2'); 
    return(isValidate); 
} 

或者

function ValidatePdf() { 
    return(ValidateFields('txt_pdf_title', 'imgPdfError') && ValidateFields('txt_pdf_title1', 'imgPdfError1') && ValidateFields('txt_pdf_title2', 'imgPdfError2')); 
} 
+1

這將覆蓋每次調用時'isValidate'的值。如果第一個返回'false',第三個返回'true','ValidatePdf'將返回'true'。您應該'&&'結果一起返回驗證的正確結果:'isValidate = isValidate && ValidateFields('txt_pdf_title','imgPdfError');'。 – pete 2014-11-14 14:24:47

+0

ahh thx,你是對的。沒想過這個;) – 2014-11-14 14:28:27

+0

樂意幫忙。 :) – pete 2014-11-14 14:28:50