4

のフォームがありinput type=fileます。Internet Explorer では、ユーザーはその入力に必要なものを何でも入力できます (一方、Firefox ではファイル チューザーが表示されます)。ユーザーが明らかに無効な名前を入力した場合、たとえば次のようになります。

a

フォームを送信しようとしても、Internet Explorer はフォームを送信しようとさえしません。

これが発生したことを知り、アラートでこれが発生していることをユーザーに知らせる方法はありますか?

4

3 に答える 3

1

「onclick()」イベントを送信ボタンに追加する必要があります。このイベントは、条件をテストする JavaScript 関数を呼び出し、JavaScript「アラート」を使用して、送信に値する何かを入力する必要があることをユーザーに知らせます。

テストの正規表現を調べてください。

ユーザーに決定してもらいたい場合は、 を使用しconfirm()ます。

それらの値をテストせずに単に警告したい場合は、次のようなものを使用できます。

<input type="submit" value="clickme" onClick="if (confirm('Really submit?')) { this.form.submit(); }">

内の JavaScript 関数呼び出しから値を取得するサンプル コードを次に示しますonclick()

<html>
    <head>
        <title>hello world</title>
        <SCRIPT LANGUAGE="javascript" type="text/javascript">
            function show_me(form_elem) {
            alert(form_elem.value);
            }
        </script>
    </head>
    <body>
        <form method="GET" name="upload_form" action="index.html" target="_top">
            <input type="file" name="file_name" size="14" maxlength="256" value="">
            <br>
            <input type="submit" value="mybutton" onclick="show_me(this.form.file_name)" />
        </form>
    </body>
</html>
于 2009-03-27T20:26:21.580 に答える
1

これを行うためのより良い方法を見つけました: http://www.priddypictures.co.uk/reference/fileInputProblem.htm

したがって、それらの人/ギャルが正しく、入力に name 属性がない場合にフォームが正常に送信される場合:

  • (Internet Explorer の場合) すべてのファイル入力から name 属性を削除する jQuery プラグインを作成する
  • 別の非表示の入力を正しい名前でフォームに挿入します
  • ファイル入力から隠し入力に値をコピーする

いつかこのプラグインを書くかもしれません。

于 2009-03-30T13:28:49.390 に答える
0

次の方法でFirefoxの動作を模倣できます。

<input type="file" name="test" onkeypress="this.click();return false;">

ユーザーがファイル入力を入力しようとすると、ファイルチューザーがポップアップ表示されます。

クライアントでJavaScriptが無効になっている場合は明らかにこれは機能しませんが、要件によっては「十分」な場合があります。

IE 6、7、8では問題なく動作しているようです。

Firefox 3では問題なく動作します(入力が許可されていないため<input type=file>)。

Safari for Windows 3および4では問題なく動作します(入力が許可されていないため<input type=file>)。

Opera 9(入力が可能<input type=file>)では、何もしません(チューザーをポップアップしたり、キーを押したりしません)。おそらくセキュリティのonkeypressために、イベントは実際にはまったく発生していないようです。

Firefox 2では、チューザーがポップアップせず、キーの押下を飲み込む<input type=file>ため、機能しません(これにより、を入力できます) 。this.click()return false

于 2009-03-27T21:05:17.337 に答える