[英]Submit button does nothing
我在表單中有一個提交按鈕,並使用PHP編寫腳本以通過電子郵件發送表單。 當按下按鈕時,什么也沒有發生,甚至沒有顯示PHP代碼,就像未安裝PHP時一樣。 我已經在機器上測試了其他簡單的郵件表單,它們顯示了代碼。 這個沒有做。
HTML代碼:
<form name="apply" method="post" action="mail.php">
<font class="error-message"></font>
<div class="form-content">
<div class="left-label">
<label>First and Last name:</label>
<label>School type:</label>
<label>Practice name:</label>
<label class="address">Address:</label>
<label class="address2">Address (cont):</label>
<label class="zip">Zip Code:</label>
<label class="city">City:</label>
<label>Website:</label>
<label>Email:</label>
</div>
<div class="right-fields">
<input type="text" name="fist-last-name" placeholder="First & Last name" title="Please enter First & Last name." />
<select name="select-school">
<option>--select--</option>
<option>Dental Assistant School</option>
<option>Medical Assistant School</option>
<option>Pharmacy Technician School</option>
<!-- <option>Personal Trainer School</option> -->
<option>Other School</option>
</select>
<input type="text" name="practice-name" placeholder="Practice name" title="Please enter your practice name." />
<textarea name="address1" placeholder="Address 1" title="Please enter address1"></textarea>
<textarea name="address2" placeholder="Address 2" title="Please enter address2"></textarea>
<div class="clear"></div>
<input type="text" name="zipcode" placeholder="Zip Code" title="Please enter your zipcode." /><br>
<input type="text" name="city" placeholder="City" title="Please enter the city where you live." />
<input type="text" name="website-address" placeholder="Website" title="Please enter your website address." />
<input type="text" name="email" placeholder="Email" title="Please enter your email address." />
<input type="submit" value="Submit"/>
</div>
</div>
<div class="clear"></div>
</form>
PHP代碼mail.php
:
<?php
$fist_last_name = $_POST["fist-last-name"];
$school_type = $_POST["select-school"];
$practice_name = $_POST["practice-name"];
$address1 = $_POST["address1"];
$address2 = $_POST["address2"];
$zipcode = $_POST["zipcode"];
$city = $_POST["city"];
$website = $_POST["website-address"];
$email = $_POST["email"];
$body = " <table>
<tr><th>First Last name:</th><td>".$fist_last_name."</td></tr>
<tr><th>School type:</th><td>".$school_type."</td></tr>
<tr><th>Practice name:</th><td>".$practice_name."</td></tr>
<tr><th>address1:</th><td>".$address1."</td></tr>
<tr><th>address2:</th><td>".$address2."</td></tr>
<tr><th>Zipcode:</th><td>".$zipcode."</td></tr>
<tr><th>City:</th><td>".$city."</td></tr>
<tr><th>Website:</th><td>".$website."</td></tr>
<tr><th>Email:</th><td>".$email."</td></tr>
</table>";
mail('emailaddress@domain.com','No Reply',$body,"From: noreply@domain.com");
?>
這是用於表單驗證的JavaScript:
/* Form validation */
$("form[name='apply']").submit(function(){
var error = true;
var text_fields = ["fist-last-name", "practice-name", "zipcode", "city", "website-address", "email"];
$.each(text_fields,function(key,value){
if(!$.trim($("input[name='"+value+"']").val()) == "") {
$("input[name='"+value+"']").css({'border-color': '#ccc'});
}
else{
$("input[name='"+value+"']").css({'border-color': 'red'});
error = false;
}
});
if($("form[name='apply'] select[name='select-school']").val() == "--select--") {
$("form[name='apply'] select[name='select-school']").css({'border-color': 'red'});
error = false;
}
else {
$("form[name='apply'] select[name='select-school']").css({'border-color': '#ccc'});
}
var textarea_fields = ["address1", "address2"];
$.each(textarea_fields,function(key,value){
if(!$.trim($("form[name='apply'] textarea[name='"+value+"']").val()) == "" ) {
$("form[name='apply'] textarea[name='"+value+"']").css({'border-color': '#ccc'});
}
else {
$("form[name='apply'] textarea[name='"+value+"']").css({'border-color': 'red'});
error = false;
}
});
console.log(error);
if(error == true) {
$.post('mail.php',$("form[name='apply']").serialize(),function(data){
console.log(data);
});
}
return false;
});
$("form[name='apply'] input[type='text'], form[name='apply'] textarea").blur(function(){
if($.trim($(this).val()) == ""){
$(".error-message").text($(this).attr('title'));
$(this).css({'border-color': 'red'});
}
else {
$(this).css({'border-color': '#ccc'});
$(".error-message").text('');
}
});
$("form[name='apply'] input[type='text'], form[name='apply'] textarea").bind("keydown",function(){
if($.trim($(this).val()) == ""){
$(".error-message").text($(this).attr('title'));
$(this).css({'border-color': 'red'});
}
else {
$(this).css({'border-color': '#ccc'});
}
});
該代碼中發生錯誤:
$("form[name='apply']").submit(function(){
var error = true;
var text_fields = ["fist-last-name", "practice-name", "zipcode", "city", "website-address", "email"];
$.each(text_fields,function(key,value){
if(!$.trim($("input[name='"+value+"']").val()) == "") {
$("input[name='"+value+"']").css({'border-color': '#ccc'});
}
else{
$("input[name='"+value+"']").css({'border-color': 'red'});
error = false;
}
});
if($("form[name='apply'] select[name='select-school']").val() == "--select--") {
$("form[name='apply'] select[name='select-school']").css({'border-color': 'red'});
error = false;
}
else {
$("form[name='apply'] select[name='select-school']").css({'border-color': '#ccc'});
}
var textarea_fields = ["address1", "address2"];
$.each(textarea_fields,function(key,value){
if(!$.trim($("form[name='apply'] textarea[name='"+value+"']").val()) == "" ) {
$("form[name='apply'] textarea[name='"+value+"']").css({'border-color': '#ccc'});
}
else {
$("form[name='apply'] textarea[name='"+value+"']").css({'border-color': 'red'});
error = false;
}
});
console.log(error);
if(error == true) {
$.post('mail.php',$("form[name='apply']").serialize(),function(data){
console.log(data);
});
}
return false;
});
您的Javascript正在阻止表單提交。 當您在表單的submit
事件中return false
時,它將阻止表單被提交。
我認為您想返回error
變量,該變量似乎是一個布爾值,用於指示驗證錯誤。
嘗試:
$("form[name='apply']").submit(function(){
.... JS code ....
return error;
});
這樣,如果沒有驗證錯誤,則將提交表單。 同樣,您的error
布爾值會產生誤導,如果error
為true則存在驗證錯誤,這將更加合乎邏輯,但是您將其取反了-不會對實際代碼執行產生任何影響,只是可讀性高。
嘗試if(isset($_POST['practice-name'])){ die('values posted'); }else{ die('nothing was posted'}
if(isset($_POST['practice-name'])){ die('values posted'); }else{ die('nothing was posted'}
,讓我們知道它的作用。
首先,嘗試注釋掉mail.php中的所有內容,然后做一些非常簡單的事情,例如:
<?php echo "This works!"; ?>
只是看它是否確實提交到頁面。 如果是這樣,問題可能出在“ post”變量或輸入表單上。 嘗試制作一個新的html頁面,其中包含mail.php的輸入表單,但除了文本框和提交按鈕外,別無其他。 如果提交並且mail.php接收了所有數據,則問題可能與文件無關。
希望這可以幫助!
既然您說表單根本不會提交,並且我測試了代碼,並且確實按原樣提交了, 那么您必須具有一些JavaScript函數或事件偵聽器,以阻止表單提交 。
您的HTML可以正常工作,並且表單提交確實告訴瀏覽器提交表單。 這不會是PHP的問題,因為如果什至沒有提交提交,那么如果表單本身正確顯示,PHP就不會扮演任何角色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.