0

選択タグの選択されたオプションを変更すると、ボタンと同じようにフォームが送信されるようにしようとしています。

function form_search()
{
    document.forms['myform'].process.value = 'search';
    document.forms['myform'].submit();
}

/body次を含むhtmlファイルのタグの直前から含まれています。

<select name="attribute" form="myform" onchange="form_search();">
    <option value="op1">op1</option>
    <option value="op2">op2</option>
</select>

<input type="hidden" name="process">

<button onclick="form_search();">button</button>

ボタンを押すと、すべてが期待どおりに機能します。ただし、select タグに関連付けられているオプションを変更すると、firebug によると、js 関数の両方の行にヒットしたように見えますが、フォームは送信されないようです。document.forms['myform'].submit();この場合、js関数の行でエラーが発生していると思います。

何が起こっているのですか?引数のない関数への 2 回の呼び出しは、同じように動作するはずですか?

4

1 に答える 1

2

エラーが発生した場合document.forms['myform'].submit();、最も可能性の高い理由は、DOM 内のフォームsubmitのメソッドを上書きしているという名前のフォーム内に何かがあることです。submitただし、あなたが私たちと共有したコードには、これの兆候はありません.

とすれば:

選択を変更すると、JS が実行されます。最初の行が実行されます。2 行目でエラーが発生し、それで終わりです。

ボタンをクリックすると、JS が実行されます。最初の行が実行されます。2 行目はエラーになります。ボタンの通常の動作が続行され、フォームが送信されます (フォーム送信には JS の代わりに標準の HTML が使用されます)。

于 2013-11-05T17:20:09.113 に答える