4

このスクリプトを使用して静的ページを検索します

しかし、ボタンをクリックしたときではなく、テキスト入力を入力したときにこれを検索したいのですが、検索したところ、次のいずれかが機能することがわかりました。

onkeypress="this.submit();"
onkeyup="this.submit();"
onkeypress="document.forms["f1"].submit();"
onkeyup="document.forms["f1"].submit();"

しかし、どれも機能しません

私はスクリプトで同じhtmlを使用しました

<form id="f1" name="f1" action="javascript:void()" onsubmit="if(this.t1.value!=null &amp;&amp; this.t1.value!='')parent.findString(this.t1.value);return false;">
<input type="text" id="t1" name="t1" value="Search" onfocus="if(this.value=='Search')this.value='';" size="20" onkeypress="this.submit();" />
<input type="submit" name="b1" value="Find" />
</form>
4

4 に答える 4

1

トムが言ったように、呼び出しform.submit()は onsubmit ハンドラーをトリガーしません。onsubmit ハンドラーは、フォームが手動で送信されたときにのみ呼び出されます。したがって、フォームを手動で送信しようとしている場合は、自分でエラーを確認する必要があります。

HTML

<form id="f1">...<form/>

JS

// After the DOM is loaded
var form = document.getElementById('f1');
function canSubmit(form) {
    if(form.t1.value!=null && form.t1.value!='') {

    }
    return false;
}

form.onsubmit = function() {
    return canSubmit(form);
}

form.onkeypress = function() {
    if(canSubmit(form)){
        form.submit();
    }
}

以上のことをすべて言いましたfindStringが、もう少し賢い があれば、両方の場所から呼び出して、空の場合は無視するだけです。

function findString(value) {
    if (value) {
        parent.findString(form.t1.value);
    }
}

form.onsubmit = function() {
    findString(form.t1.value);
    return false;
}

form.onkeypress = function() {
    findString(form.t1.value);
}
于 2013-06-18T18:51:15.170 に答える
1

見積もりの​​問題があります。ここの色分けはそれを示しています!

onkeypress="document.forms["f1"].submit();"
           ^                ^
         opens           closes

サムビットは要素ではなくフォーム上にあるため、なぜthis.submit失敗するのですか。

あなたが必要だろう

this.form.submit()
于 2013-06-18T13:27:34.730 に答える
0

イベントを割り当てるには、おそらくaddEventListener()を使用する必要があります。その上、タイプミスがあります。インラインの二重引用符が問題にならないように、文字列の開始/終了には単一引用符を使用することをお勧めします (逆も同様です)。

onkeypress='document.forms["f1"].submit();'

Javascript 経由でフォームを送信するには:

document.forms[0].submit()

最初のフォームを送信します。

于 2013-06-18T13:30:32.577 に答える