1

「form.submit();」のインスタンスを動的に変更したい $('form').submit(); に対する特定の選択要素の onchange 関数に表示されます。フォーム自体に対して送信イベントがトリガーされるようにします。

onchange 関数を更新する必要がある選択リストの例を次に示します。

<td class="form-field selectinput" align="left" valign="left" style="width: 90px;" title="Select status type">
        <select class="filterlist" name="cStatus" tabindex="5" style="width: 90px;" onchange="form.submit();">
          <option value="" title="[All]">[All]</option>
          <option value="A" title="Authorised">Authorised</option>
          <option value="C" selected="" title="Cancelled">Cancelled</option>
          <option value="U" title="Declined">Declined</option>
          <option value="R" title="Requested">Requested</option>
          <option value="T" title="Taken">Taken</option>
          <option value="W" title="Withdrawn">Withdrawn</option>
        </select>
      </td>

ページのヘッダー セクションに次のコードを挿入して、関数の更新を試みます。

 $(document).ready(function(){
$(function() {
   $('select').each(function() {
     var txt = this.onchange ;
     alert(txt);
     var patt=/form.submit()/g;
     var result=patt.test(txt);
     if (result) {
        var txt =  txt.replace('form.submit()',""); 
        this.onchange = eval(txt);
     }
   });
});

});

警告メッセージは次のように表示されます。

関数 onchange(イベント) { form.submit(); ブロッククオート

その後、コンソール ログに次のエラーが表示されます。

キャッチされていない TypeError: オブジェクト関数 onchange(event) { form.submit(); メソッド「replace」がありません

私は実際に次のように動作させることができます:

 this.onchange = function() { $('form').submit(); }

ただし、onchange に form.submit(); 以外のコードが含まれている場合があります。そのような:

form.submit();form.iYear.disabled=true;form.cGroupItem.disabled=true;

そのため、関数全体を置き換えるのではなく、「form.submit();」を切り取ります。これを '$('form').submit();' に置き換えると、上記は次のようになります。

$('form').submit();form.iYear.disabled=true;form.cGroupItem.disabled=true;

さまざまな場所で toString() と eval() を使用してみましたが、文字列 txt を編集しようとすると、オブジェクトにメソッド エラーがありません。

何か案は??

4

1 に答える 1

0

ファンキーな eval と replace を行う代わりに、これを試してください:

...
     if (result) {
        this.onchange = function(){}; //empty function
     }
...
于 2012-06-06T13:42:46.533 に答える