簡體   English   中英

提交失敗

[英]Onsubmit not working

我有這個表格,我試圖做一個“提交”,當我單擊“提交”時,它檢查“電子郵件”是否為“ cemail”,以及是否使用了用戶名,到目前為止

<form class="form-horizontal" action="#" method="post" onsubmit="return ValidationEvent()">
                <fieldset>
                    <legend>SIGN UP! <i class="fa fa-pencil pull-right"></i></legend>
 <div class="form-group">
    <div class="col-sm-6">
        <input type="text" id="firstName" placeholder="First Name" class="form-control" name="firstname" autofocus required>
    </div>
    <div class="col-sm-6">
        <input type="text" id="lastname" placeholder="Last Name" class="form-control" name="lastname" autofocus required>
    </div>
</div>

                <div class="form-group">
                    <div class="col-sm-12">
                        <input type="email" id="email" placeholder="Email" name="email" class="form-control" required>
                    </div>
                </div>
              <div class="form-group">
                    <div class="col-sm-12">
                        <input type="email" id="cemail" placeholder=" Re-enter Email" name="cemail" class="form-control" required>
                    </div>
                </div>

                 <div class="form-group">
                    <div class="col-sm-12">
                        <input type="text" id="username" placeholder=" Username" name="username" class="form-control" required>
                    </div>
                </div>

                <div class="form-group">
                    <div class="col-sm-12">
                        <input type="password" id="password" placeholder="Password" name="password" class="form-control" required>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-12">
                        <input type="text" id="datepicker" placeholder= "DOB" name="birthday" class="form-control" required>
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label col-sm-1"></label>
                    <div class="col-sm-8">
                        <div class="row">

                                <label class="radio-inline">
                                    <input type="radio" id="radio" value="Female" name= "gender" required>Female
                                </label>


                                <label class="radio-inline">
                                    <input type="radio" id="radio" value="Male" name= "gender">Male
                                </label>

                        </div>
                    </div>
                </div> <!-- /.form-group -->
                <div class="form-group">
                    <div class="col-sm-4 col-sm-offset-3">
                        <button type="submit" class="btn btn-primary btn-block">Register</button>
                    </div>
                </div>
            </form>

JavaScript代碼:

 <script>
  function ValidationEvent() {
      var email = document.getElementById("email").value;
        var username = document.getElementById("username").value;
        var cemail = document.getElementById("cemail").value;
        // Conditions
        if (email.match != cemail.match) {
            alert("Your email doesn't match!");

        }
        if(mysqli_num_rows($result) != 0)
        {
            alert("Username already taken!");
        }
        else {
        alert("Thank you");
        }

        }
  </script>

我是否以錯誤的方式使用該函數,是否還有另一種更簡便的方法,可以在我的Java腳本中放置sql語句嗎?

用於檢查帶有電子郵件和cemail的電子郵件
email.localeCompare(cemail)
這將檢查兩個電子郵件之間的字符串比較

對於mysqli_num_rows,在javascript中未定義任何地方,因此我們將在控制台中得到未定義的錯誤,因此需要使用該名稱編寫一個不同的函數。

首先,不要使用內聯HTML事件處理屬性(例如“ onsubmit”),因為它們會創建“意大利面條代碼”,匿名全局事件處理包裝函數,並且不符合現代W3C DOM事件處理標准

其次,您的.php結果必須從某個地方獲取。 您需要先調用該文件以獲取結果,然后才能使用它們。

接下來,您錯誤地使用了.match()字符串方法來相互比較電子郵件。 您真正需要做的就是比較在電子郵件字段中輸入的值.trim()對表單值調用.trim().trim()可能無意添加的任何前導或尾隨空格也是一個好主意)。

重組代碼以使用標准后,JavaScript將會進行如下更改(僅供參考:由於表單提交被阻止,因此在Stack Overflow代碼段環境中將無法使用,因此您可以在此處查看有效的版本):

 // When the DOM is loaded: window.addEventListener("DOMContentLoaded", function(){ // Get references to the DOM elements you will need: var frm = document.getElementById("frm"); // Don't set variables to the values of DOM elements, // set them to the DOM elements themselves so you can // go back and get whatever properties you like without // having to scan the DOM for them again var email = document.getElementById("email"); var username = document.getElementById("username"); var cemail = document.getElementById("cemail"); // Set up a submit event handler for the form frm.addEventListener("submit", validationEvent); // All DOM event handling funcitons receive an argument // that references the event they are responding to. // We need that reference if we want to cancel the event function validationEvent(evt) { // Conditions if (email.value.trim() !== cemail.value.trim()) { alert("Your email doesn't match!"); // Cancel the form submit event evt.preventDefault(); evt.stopPropagation(); return; } // You need to have already gotten the "mysqli_num_rows($result)" value // from your .php file and saved it to a variable that you can then check // here against "!=0" if(mysqli_num_rows($result) != 0) { alert("Username already taken!"); // Cancel the form submit event evt.preventDefault(); evt.stopPropagation(); } else { alert("Thank you"); } } }); 
 <form class="form-horizontal" id="frm" action="#" method="post"> <fieldset> <legend>SIGN UP! <i class="fa fa-pencil pull-right"></i></legend> <div class="form-group"> <div class="col-sm-6"> <input type="text" id="firstName" placeholder="First Name" class="form-control" name="firstname" autofocus required> </div> <div class="col-sm-6"> <input type="text" id="lastname" placeholder="Last Name" class="form-control" name="lastname" autofocus required> </div> </div> <div class="form-group"> <div class="col-sm-12"> <input type="email" id="email" placeholder="Email" name="email" class="form-control" required> </div> </div> <div class="form-group"> <div class="col-sm-12"> <input type="email" id="cemail" placeholder=" Re-enter Email" name="cemail" class="form-control" required> </div> </div> <div class="form-group"> <div class="col-sm-12"> <input type="text" id="username" placeholder=" Username" name="username" class="form-control" required> </div> </div> <div class="form-group"> <div class="col-sm-12"> <input type="password" id="password" placeholder="Password" name="password" class="form-control" required> </div> </div> <div class="form-group"> <div class="col-sm-12"> <input type="text" id="datepicker" placeholder= "DOB" name="birthday" class="form-control" required> </div> </div> <div class="form-group"> <label class="control-label col-sm-1"></label> <div class="col-sm-8"> <div class="row"> <label class="radio-inline"> <input type="radio" id="radio" value="Female" name= "gender" required>Female </label> <label class="radio-inline"> <input type="radio" id="radio" value="Male" name= "gender">Male </label> </div> </div> </div> <!-- /.form-group --> <div class="form-group"> <div class="col-sm-4 col-sm-offset-3"> <button type="submit" class="btn btn-primary btn-block">Register</button> </div> </div> </form> 

首先給您的表單起一個名字和一個動作

<form class="form-horizontal" id="myform" action="chkValues.php" method="post" >
....


            <div class="form-group">
                <div class="col-sm-12">
                    <input type="email" id="email" placeholder="Email" name="email" class="form-control" required>
                </div>
            </div>
          <div class="form-group">
                <div class="col-sm-12">
                    <input type="email" id="cemail" placeholder=" Re-enter Email" name="cemail" class="form-control" required>
                </div>
            </div>


....
</form>

然后將此腳本放在底部

<script>
$('#myForm').on("sumbit", function(){
 // cancel the original sending
event.preventDefault(); 

$.ajax({
  var form = $(this);
  var action = form.attr("action"),
      method = form.attr("method"),
      data   = form.serialize();
})          
.done: function(data) // is called wehn the call was okay
  {
    if( data.substr(0, 5) == "Error"){
       alert(data);   // sent the sting of the "error message" begining with "Error"
      }else{
       top.location.href = data;  // sent the sting of the "success page" when all was okay and data are saved in the database
      }            
    }
.fail(function() {
   alert( "Error: Getting data from Server" );
})
});
</script>

在php文件中檢查值,如果出現問題,則返回錯誤。

<?php
  if(!isset($_POST['email']) || !isset($_POST['cemail'])){
    die("Error: Please fill out both email fields.");
    if($_POST['email'] != $_POST['cemail'] ){
      die("Error: The Email adresses do not match.");
    }
  here do what you want to do with the data. 



when finish just send the new url
echo "success.html";
}
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM