web-dev-qa-db-ja.com

送信ボタンが押された後にフォームの値を変更する

[編集]いろいろ調べてみたところ、CKEditorを自分のページに統合する方法に問題があることがわかりました。受け入れられた回答で説明されているように、この場合、シンプルで明白な方法doesが機能します。

こんにちは、

送信ボタンが押された後、実際の送信が行われる前に、フォームの値を変更する必要があります。

フォームの「送信」イベントにフックして手動でテキストフィールドの値を変更しようとしましたが、実際には送信された値は変更されないようです。

何か案は?

17
Editorman

submitハンドラーが機能しなかったという声明に興味があります。それは私のためです。私はフォームを送信する前に、何年もの間、非表示のフィールドに入力するために使用してきました。他のフォームフィールドでも機能するはずです。

例( ライブコピー ):

HTML:

<form id='theForm'
    action='http://www.google.com/search'
    method='GET' target='_new'>
      <label>Search for:
        <input type='text' name='q' id='txtSearch'></label>
      <input type='submit' id='btnSearch' value='Search'>

JavaScript:

window.onload = function() {

  document.getElementById('theForm').onsubmit = function() {
    var txt = document.getElementById('txtSearch');
    txt.value = "updated " + txt.value;
  };
};​

テスト済みで、WindowsのIE6とIE7、Chrome、Firefox、およびLinuxのOperaで動作しています。


Update:以下のコメントに基づいて、jQueryを使用しています。すべてに対してjQueryを使用してもうまく機能します。

$('#theForm').submit(function() {
  var txt = $('#txtSearch');
  txt.val("updated " + txt.val());
});

実例 テストされ、同じブラウザのセットで動作します。 このバージョンidではなくよりオープンな検索を使用し、引き続き機能します。

20
T.J. Crowder

デフォルトの送信アクションを防止し、手動でフォームを再送信する必要があります。

$('form').submit(function(e) {
    e.preventDefault();

    // do your processing

    this.submit(); // call the submit function on the element rather than 
                   // the jQuery selection to avoid an infinite loop
});
12
lonesomeday

送信ボタンのJavaScriptイベントのクリック時に関数を追加して値を変更してみましたか?クライアントスクリプトが最初に実行されるため、機能する可能性があります

1
Sreedhar K