簡體   English   中英

未執行帶有javascript onsubmit的PHP和HTML表單

[英]PHP & HTML Form with javascript onsubmit not executed

我有一個HTML表單,要求用戶輸入。 javascript函數用於驗證表單,並且應在執行PHP代碼之前觸發(使用onsubmit)。 (該js文件在標題<script type="text/javascript" src="js/javascript.js"></script>引用)

但是,永遠不會執行javascript,而是執行PHP代碼,並(正確地)包含新文件。

如何使javascript根據需要執行?

HTML檔案:

<form name="details" action="" method="post" 
     onSubmit="return ValidateForm(details);">
...
<input type="submit" name="post-this-form" value="Next"/>
</form>

PHP文件:

if (isset($_POST['post-this-form']) and 
     $_POST['post-this-form'] == 'Next')
{
...
some php 
...
include 'shipping-details.html.php';
exit();
}

編輯

這是所要求的javascript。 它已經過測試,可以在不涉及任何PHP的情況下工作。 通過傳遞details (表單名稱),我可以訪問所有表單字段。

function ValidateForm(details)
        {
        var firstName=document.forms.details.firstName.value;
        var lastName=document.forms.details.lastName.value;
        var streetAddress=document.forms.details.streetAddress.value;
        var town=document.forms.details.town.value;
        var city=document.forms.details.city.value;
        var zip=document.forms.details.zip.value;
        var country=document.forms.details.country.value;       
        var creditCard=document.forms.details.creditcard.value;                 

                ...

        //Checks firstName
        if ((firstName=="")||(!firstName.match(alphabetExpression)))
            {
            alert ("Invalid first name, please re-enter");
            return false;
            }
                 ...

        //Checks creditCard
        if ((creditCard=="")||(!creditCard.match(numericExpression))||(creditCardLength!=16))
            {
            alert ("Invalid credit card entry, please re-enter");
            return false;
            }       
        }// end function

編輯2

我添加了alert ("Hi"); 到javascript的開頭,並且警報從不顯示,這使我認為該功能根本沒有執行。

編輯3

我最初懷疑此問題可能是由於PHP所致。 正如Jason在評論中提到的那樣,問題出在javascript本身。 這是一個有點奇怪的想法,因為相同的javascript代碼在沒有PHP且在我的本地計算機上可以“獨立”運行。 有太多要考慮的因素...感謝大家抽出時間來看看我的問題!

關於您要構建的功能,您必須了解以下幾點

function ValidateForm() {
     this; // this contains the form name no need for any variable declaration

     return true; // or false This is very important to continue the execution
                  // false stops the submittion
}

當您同時解決這兩個問題時,它應該可以正常工作。

評論已轉換為答案

“我敢打賭這是一個JavaScript錯誤。請打開錯誤控制台。在Firefox中按ctrl + shift + j。”

很高興提供了幫助。

暫無
暫無

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

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