0
<form onsubmit="submit(); return false;" name="text" id="form" method="get">
<input type="feild" style="font-size: 150%;" id="field" name="field" value=""
onSubmit="this.value='';"/>
<input type="button" id="add" style="font-size: 150%;" value=" Add tally to score "/>
<input type="submit" value="submit" style="visibility:hidden" />

「submit();」を変更すると 「alert('here');」に アラート機能を完全に呼び出します。submit 関数を呼び出さないのはなぜですか?

ユーザーがEnterキーを押したときに関数が呼び出されるようにします。 http://jsfiddle.net/kaninepete/JsAr4/

注: 側面のボタンは別の目的のためのものであり、問​​題の一部ではありません。 編集 もっと仕事をして、クリスチャンの例に従おうとすると、私はここに来ましたhttp://jsfiddle.net/kaninepete/MGxNG/

これが彼の例と違う理由がわかりません!私が得るのは "{"error": "Please use POST request"}" だけで、彼は完璧に動作します。

4

2 に答える 2

2

入力要素には onsubmit メソッドはありません。

フィドルでは、入力ボタンで type="button" を type="submit" に変更すると、ボタンを押すとフォームが呼び出されます。

編集:

あなたの問題は2つのようです。

1 つはsubmit、ブラウザのネイティブ メソッドであることです。たとえば、名前を変更した場合。mySubmit問題を解決します。

2 つ目は、JSFiddle が js コードをスコープ内に配置したことです。これは、定義したメソッドがそのスコープ外では使用できないことを意味します。これは、メソッドをグローバルにすることで解決されます。

window.mySubmit = function () {
    alert('test');
}

私のフィドル: http://jsfiddle.net/KrooniX/UttWF/

于 2011-03-22T16:40:38.603 に答える
0

jsfiddle の外で再現しようとしましたが、そのまま動作しているように感じます。たぶん私は完全なコードを取得できませんでしたか?

これは私が使用したものです (前に説明したボタンも削除しました)。これは、テキスト ボックスで Enter キーを押すと機能します (FF でテスト済み)。足りないものはありますか?

<html>

<head>

<style>
</style>

<script lang="javascript">

var tally = "0";
window.onload = setup;

function setup() {
    drawTally();
    document.getElementById("add").onclick = addScore;
    document.getElementById("form").onSubmit= submit;
}

function addScore() {
    document.getElementById('change').innerHTML = parseInt(document.getElementById('change').innerHTML)+tally;
    tally=0;
}

function submit(){
    alert("it worked!");
}

function drawTally() {
    var elem = document.getElementById('tallyDisp');
    //var tally = 0;
    if (elem && elem.getContext) {
        var context = elem.getContext('2d');
        if (context) {
            context.fillStyle = '#9f9';
            context.fillRect(0, 0, 300, 200);
            context.fillStyle = '#00f';
            context.font = 'bold 100px sans-serif';
            context.textAlign = 'center';
            context.textBaseline = 'middle';
            context.fillText(tally, 150, 100);
        }
    }
}
setInterval("drawTally();", 60);
</script>


<body>
  <h1>Farkle</h1>
<canvas height="200" width="300" id="tallyDisp">Oops!</canvas>

<form onsubmit="tally=parseInt(tally)+parseInt((text.elements.field.value));
document.text.elements.field.value=''; return false;" id="form" name="text">
    <input type="feild" onsubmit="this.value='';" value="" name="field" id="field" style="font-size: 150%;">

</form>
<p>Your score is <span id="change"> 0</span>!</p>


</body>
</html>
于 2011-03-22T16:52:15.463 に答える