Javascript onclick验证未停止向MVC控制器发送邮件

Javascript onclick验证未停止向MVC控制器发送邮件,javascript,asp.net-mvc,validation,realex-payments-api,Javascript,Asp.net Mvc,Validation,Realex Payments Api,我正在尝试集成realex支付API,并使用了上的示例,作为该示例的一部分,我设置了以下页面: <!DOCTYPE html> <html> <head> <title>Basic Validation Example</title> <script src="~/Scripts/jquery-1.10.2.js"></script> <script src="~/Scripts/r

我正在尝试集成realex支付API,并使用了上的示例,作为该示例的一部分,我设置了以下页面:

<!DOCTYPE html>
<html>
<head>
    <title>Basic Validation Example</title>
    <script src="~/Scripts/jquery-1.10.2.js"></script>
    <script src="~/Scripts/rxp-js.js"></script> <!-- Available at https://github.com/realexpayments -->
    <!-- Basic form styling given as an example -->
    <style type="text/css">
        label {
            display: block;
            font-size: 12px;
            font-family: arial;
        }

        input {
            width: 200px;
        }

            input.small {
                width: 50px;
            }

        .twoColumn {
            float: left;
            margin: 0 30px 20px 0;
        }

        .clearAll {
            clear: both;
        }
    </style>
</head>
<body>
    <!-- Basic HTML form given as an example -->
    <form name="myForm" method="POST" autocomplete="off" action="securepayment">
        <p>
            <label for="cardNumber">Card Number</label>
            <input type="text" id="cardNumber" name="card-number" />
        </p>
        <p>
            <label for="cardholderName">Cardholder Name</label>
            <input type="text" id="cardholderName" name="cardholder-name" />
        </p>
        <p class="twoColumn">
            <label>Expiry Date</label>
            <input type="text" id="expiryDateMM" name="expiry-date-mm" aria-label="expiry date month" placeholder="MM" class="small" />
            <input type="text" id="expiryDateYY" name="expiry-date-yy" aria-label="expiry date year" placeholder="YY" class="small" />
        </p>
        <p class="twoColumn">
            <label for="cvn">Security Code</label>
            <input type="text" id="cvn" name="cvn" class="small" />
        </p>
        <p class="clearAll">
            <input value="Pay Now" type="submit" name="submit" onclick="validate();" />
        </p>
    </form>
    <script>
        // Basic form validation using the Realex Payments JS SDK given as an example
        function validate() {
            alert("VALIDATE HIT !!!!")
            var cardNumberCheck = RealexRemote.validateCardNumber(document.getElementById('cardNumber').value);
            var cardHolderNameCheck = RealexRemote.validateCardHolderName(document.getElementById('cardholderName').value);
            var expiryDate = document.getElementById('expiryDateMM').value.concat(document.getElementById('expiryDateYY').value) ;
            var expiryDateFormatCheck = RealexRemote.validateExpiryDateFormat(expiryDate);
            var expiryDatePastCheck = RealexRemote.validateExpiryDateNotInPast(expiryDate);
            if ( document.getElementById('cardNumber').value.charAt(0) == "3" ) { cvnCheck = RealexRemote.validateAmexCvn(document.getElementById('cvn').value);}
            else { cvnCheck = RealexRemote.validateCvn(document.getElementById('cvn').value); }
            if (cardNumberCheck == false || cardHolderNameCheck == false || expiryDateFormatCheck == false || expiryDatePastCheck == false || cvnCheck == false)
            {
                // code here to inform the cardholder of an input error and prevent the form submitting
                if (cardNumberCheck == false) { alert("CARD IS FALSE") }
                if (cardHolderNameCheck == false) { alert("CARD HOLDER NAME IS FALSE") }
                if (expiryDateFormatCheck == false) { alert("EXPIRY DATE FORMAT IS FALSE") }
                if (expiryDatePastCheck == false) { alert("EXPIRY DATE IS IN THE PAST") }
                if (cvnCheck == false) { alert("CVN IS FALSE") }
                return false;
            }
            else
                return true;
        }
    </script>
</body>
</html>

基本验证示例
标签{
显示:块;
字体大小:12px;
字体系列:arial;
}
输入{
宽度:200px;
}
输入。小{
宽度:50px;
}
.twoColumn{
浮动:左;
利润率:0 30px 20px 0;
}
克利尔先生{
明确:两者皆有;
}

卡号

持卡人姓名

到期日

安全代码

//以Realex Payments JS SDK为例进行基本表单验证 函数验证(){ 警报(“验证命中率!!!!”) var cardNumberCheck=RealexRemote.validateCardNumber(document.getElementById('cardNumber').value); var CANDARNAME CHECK=RealexRemote.validateCardHolderName(document.getElementById('CANDARNAME').value); var expireydate=document.getElementById('expireydatemm').value.concat(document.getElementById('expireydateyy').value); var expireydateformatcheck=RealexRemote.validateExpiryDateFormat(expireydate); var expiryDatePastCheck=RealexRemote.validateExpiryDateNotInPast(expiryDate); if(document.getElementById('cardNumber').value.charAt(0)=“3”){cvnCheck=RealexRemote.validateAmexCvn(document.getElementById('cvn').value);} else{cvnCheck=RealexRemote.validateCvn(document.getElementById('cvn').value);} 如果(cardNumberCheck==false | | |持卡人姓名检查==false | | | expiryDateFormatCheck==false | | expiryDatePastCheck==false | | cvnCheck==false) { //此处的代码用于通知持卡人输入错误并阻止表单提交 如果(cardNumberCheck==false){alert(“卡片为false”)} 如果(持卡人姓名检查==false){alert(“持卡人姓名为false”)} 如果(expiryDateFormatCheck==false){alert(“到期日期格式为false”)} 如果(expiryDatePastCheck==false){alert(“过期日期已过”)} 如果(cvnCheck==false){alert(“CVN为false”)} 返回false; } 其他的 返回true; }
尽管确保javascript按预期工作,但我已检查是否在警报中显示了相应的验证消息,尽管onclick()事件导致返回false,但发送到控制器的消息从未取消


有人知道为什么会发生这种情况或者我做错了什么吗?

尝试将
onclick
事件处理程序从
onclick=“validate();”
更改为
onclick=“return validate();”
,这将解决此问题


希望这有帮助

尝试将事件处理程序从
onclick=“validate();”
更改为
onclick=“return validate();”
,以解决此问题


希望这有帮助

您是否在您的
submit
按钮的
onclick
事件中尝试了
return validate()
?您好,大卫,这是我的问题,愚蠢的我:)谢谢将其作为答案添加,我将标记为正确的感谢One Jay!。很高兴它修好了!您是否在您的
submit
按钮的
onclick
事件中尝试了
return validate()
?您好,大卫,这是我的问题,愚蠢的我:)谢谢将其作为答案添加,我将标记为正确的感谢One Jay!。很高兴它修好了!