如何停止调用服务器端事件

时间:2014-11-14 14:00:46

标签: javascript

我已经制作了一种向页面添加图像以供用户反馈的方法。我已经尝试了自己的方法,现在想一遍又一遍地使用它,所以它匹配网站上的验证。

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() 我不知道为什么它不起作用。但是当你传递原始值并按下按钮时调用方法

3 个答案:

答案 0 :(得分:2)

对于多重验证,您只需添加另一个布尔值:

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 :(得分:1)

只需返回ValidateFields的结果:

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

您也可以将onclick更改为:

onclick="return ValidatePdf();"

以便返回ValidatePdf的结果,现在是ValidateFields的结果。

答案 2 :(得分:0)

错误的方式,应该是:

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