0

Web を見回しても、関数を関数と同じに設定する例はあまり見たことがありません。しかし、私が見つけたいくつかのフォーラムでは、この方法は広くサポートされていないと多くの人が言っているようです。

私の質問を説明するために、これを実装したいフォームがあります:

<table border="0" cellpadding="2" cellspacing="5">
                <th colspan="2" align="center">Check Out</th>
                <form name="checkOut" method="post" onSubmit="return(validate(this))" action="checkOut()"> 
                    <tr><td>Territory Number</td><td><input type="text" name="numberOut" tabindex="1" maxlength="3" size="3" /></td>
                    </tr><tr><td>First Name of Publisher</td><td><input type="text" onKeyUp="showHint(this.value)" name="fName" tabindex="2" maxlength="15"/></td>
                    </tr><tr><td>Last Name of Publisher</td><td><input type="text" onKeyUp="showHint_l(this.value)" name="lName" tabindex="3" maxlength="15" /></td>
                    </tr><tr><td><input type ="checkbox" name="specialC" tabindex="4" value="Yes"/> Special Campaign</td>
                    </tr><tr><td><input type="button" onClick="clearForm()" value="Reset" /></td><td><input type="submit" value="Check Out" /></td>
                </form>
                <p>Suggestions: <span id="txtHint"></span></p>
            </table>

より具体的には、checkOut() 関数は ajax を使用して、データベースに対していくつかの挿入コマンドを実行する php スクリプトにフォームの値を送信します (私は web ベースのアプリケーションにかなり慣れていないため、ajax を使用してテクニックを学びたいと考えています)。したがって、jQuery の使用をしばらく延期したいと思います)。現時点では、関数の例はありません。

当然のことながら、その関数をイベント ハンドラー (onSubmit = "checkOut()") に入れるだけでよいのでしょうか? 同時に、action=""? を残します。関数全体が php スクリプトを実行し、別のアクション スクリプトを使用しなくても、必要なことを正確に実行すると想定します。

フィードバックをいただければ幸いです。

4

4 に答える 4

2

の代わりに<input type="button" />(またはアンカー、buttonまたは何でも) を使用し<input type="submit" />ます。ボタンのクリック イベントで、次を実行します。

if(validate(document.getElementById("formId"))){
    // post the form w/ AJAX
    checkOut();
}

スクリプトベースのソリューションには、おそらくスクリプト以外のオプションが必要であることに注意してください。<input type="submit" />この場合、内部noscriptタグを配置するのと同じくらい簡単です。

ちなみに、あなたのマークアップは無効です。をのform直接の子として表示することはできませんtable

于 2012-09-08T00:33:53.787 に答える
2

にすることもできますが、ハンドラーaction="javascript:checkOut();"に入れる方がほぼ確実です。onSubmit

于 2012-09-08T00:10:28.743 に答える
0

このコードを使用するのが最善の方法です

<input type="submit" id="submit_button">

そして、このようなJavaScriptコード

var submit = getElementById('submit_button');
submit.preventDefault();
submit.addEventListener('click', checkOut);

最初の行でボタンを指定し、次にデフォルトのアクションを実行しないようにし、次にボタンがクリックされたときのリスナーを追加します

于 2012-09-08T01:01:37.143 に答える
0

私は通常使用します:

<input type="button" value="Submit" onclick="myFunction();">

そして、すべてがチェックアウトされた場合、私の関数は下部にあるネイティブの送信関数を使用します。

if (isSuccess)
    theForm.submit();
else
    return false;
于 2012-09-09T01:41:24.177 に答える