しかし、プラグインが私には適さず、私はそれを少し書き換えることを許可しました。
そのため、たとえば、確認するリンクを選択するのは不便でしたが、逆に、プラグインが適用されないリンクを指定する必要がありました。 ここで、高度な開発者は、jQueryでのセレクターの正しい操作がわからないトマトを投げ始めます。 しかし、これはそうではありません。たとえば、次のように、プラグインの以前のバージョンがどのように機能するかを自分で確認できます。
$('a:not([class~="ajax"])')
(最後のトピックの著者によって提案された
$('a:[class!="ajax"]')
驚異的でした)。
非表示にするのはなんて恥ずかしいのか、プラグインを少し書き換えることを許可しました。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- jQuery.fn.extend({
- FormNavigate: 関数 (o){
- var formdata_original = true ;
- jQuery(ウィンドウ).bind( 'beforeunload' 、 function (){
- if (!formdata_original) return settings.message;
- });
- var def = {
- メッセージ: '' 、
- aOutConfirm: 'a:not([target!= _ blank])'
- };
- var settings = jQuery.extend( false 、def、o);
- if (o.aOutConfirm && o.aOutConfirm!= def.aOutConfirm){
- jQuery( 'a' ).addClass( 'aOutConfirmPlugin' );
- jQuery(settings.aOutConfirm).removeClass( "aOutConfirmPlugin" );
- jQuery(settings.aOutConfirm).click( function (){
- formdata_original = true ;
- trueを 返し ます 。
- });
- }
- jQuery( "a.aOutConfirmPlugin" ).click( function (){
- if (formdata_original == false )
- if (confirm(settings.message))
- formdata_original = true ;
- return formdata_original;
- });
- jQuery( this ).find( "input [type = text]、textarea、input [type = 'password']、input [type = 'radio']、input [type = 'checkbox']、input [type = 'file '] " ).live( 'キープレスの変更 ' 、 関数 ( イベント ){
- formdata_original = false ;
- });
- jQuery( this ).find( ":submit、input [type = 'image']" ).click( function (){
- formdata_original = true ;
- });
- }
- });
使用例:
*このソースコードは、 ソースコードハイライターで強調表示されました。
- $( document ).ready( function (){
- $( "#changeme" ).FormNavigate({
- メッセージ: 「コンテンツが変更されました!\ n保存せずにページを終了してもよろしいですか?」 、
- aOutConfirm: "a.ignore"
- });
- });
どこで
message
-確認ウィンドウのテキスト情報、
aOutConfirm
確認のために無視されるタグ。
いくつかの問題が修正されました。たとえば、 onbeforeunloadイベントのオーバーライド、テキストフィールド(textarea)の誤った作業などです。
修正バージョンをダウンロードします。
例を参照してください 。
これがあなたのお役に立てば幸いです!