2012-04-16 18 views
0

jQueryを初めて使用していて、何か問題が発生しました。jQuery機能のオン/オフを切り替える

テキストボックスに自動補完機能を追加するために、ページ下部にこの機能が呼び出されていますが、この部分は問題なく動作しています。検索ボックスは、検索の二つの異なるタイプのための2つのラジオボタンが含まれていますが

$(function(){ 
    $('#intext').autocomplete('get-data.php?mode=sql', { 
     width: 400, 
     max: 5, 
     selectFirst: false 
    }); 
}); 

:ここでオートコンプリートを有効にするために呼び出されるコードです。オートコンプリート機能は、1種類の検索でのみ使用できます。

私の質問は、1つのラジオボタンをクリックしてこれを有効にし、2番目のラジオボタンをクリックして無効にするにはどうすればいいですか?

EDIT

オートコンプリートスクリプトが.autocomplete(「無効」)方法がありますが、私は有効/無効にする方法がわからないことが確認されたラジオボタンに基づきます。

EDIT 2

私はjQueryのUIオートコンプリートを使用していますように私は、「ロリーMcCrossan」によって提案された方法で作業を取得しようとしています。ここに私のラジオボタンや検索ボックス用のコードだ:

News: <input type="radio" class="myRadio" name="search_type" value="news" checked="checked" onclick="this.form.action='/search.php';" /> 
Media Gallery: <input type="radio" class="myRadio" name="search_type" value="media" onclick="this.form.action='/media.php';" /> 
<input id="intext" class="txt" type="text" name="searchterms" /> 

私は各ページに実行されるスクリプトに次のコードを持っている:

addAutoComplete($("#intext")); 

$(".myRadio").change(function() { 
    if ($(this).val() == "news") { 
     if (!$("#intext").hasClass("ui-autocomplete-input")) 
      addAutoComplete($("#intext")); 
    } 
    else { 
     $("#intext").autocomplete('destroy') 
    } 
}); 


function addAutoComplete($el) { 
    $('#intext').autocomplete('autocomplete-data.php?mode=sql', { 
     width: 400, 
     max: 5, 
     selectFirst: false 
    }); 

} 

これが動作するようには思えない、とエラーコンソールFirefoxでエラーは表示されません。

答えて

1

これがjQueryUIオートコンプリートであると仮定すると、$el.autocomplete("destroy")を使用してオートコンプリート機能を削除できます。

addAutoComplete($("#intext")); // on load 

$(".myRadio").change(function() { 
    if ($(this).val() == "a") { 
     if (!$("#intext").hasClass("ui-autocomplete-input")) 
      addAutoComplete($("#intext")); 
    } 
    else { 
     $("#intext").autocomplete('destroy') 
    } 
}); 

function addAutoComplete($el) { 
    $el.autocomplete('get-data.php?mode=sql', { 
     width: 400, 
     max: 5, 
     selectFirst: false 
    }); 
} 
+0

"#myRadio"ということは、両方のラジオボタンが同じIDを必要とするという意味ではありませんか?私はまた、検証し、要素が同じIDを持つことができないコードを記述しようとしています。私はjQueryも新しくなっています。私の理解が間違っていたら、私の中に入って修正してください。 –

+0

これはクラスセレクタである '.'です。 –

+0

申し訳ありませんが、私はそれを見ていくつかの異なるものが混在した。私はこれを試して、それがどうなるか見てみましょう。 –

0

2つのラジオボタンのいずれかが選択されている場合、オートコンプリートを無効にすることをお勧めします。メソッド名をjQueryプラグイン呼び出しの最初のパラメータとして指定することにより、jQuery UIメソッドを呼び出します。ですから、例えば:」この場合はそう

// First create the autocomplete 
$('#textbox1').autocomplete(); 

// call a method on the 'autocompleted' textbox 
$('#textbox1').autocomplete('methodname', 'methodparam1', methodparam2, etc) 

$('.classOfTheTwoRadioButtons').change(function(e) { 
    var method = $(e.target).is(':checked [value=valueIfAutocomplete]')? 'enable': 'disable'; 
    $('#textbox').autocomplete(method); 
}); 

その他のオプション:同じ名前の2つのテキストボックスを作成し、それらだけの1にオートコンプリートを添付のjQueryのtoggle()機能を使用してください。あなたautocomplete()プラグインがを持っている場合は、選択したラジオボタンがチェックされたときに見られたくないものを非表示にする。

$('.classOfTheTwoRadioButtons').change(function(e) { 
    var $e = $(e.target); 
    $('#firstTextBox').toggle($e.val() === 'value1'); 
    $('#secondTextBox').toggle($e.val() === 'value2'); 
}); 
0

あなたは確認する必要があります彼の行動を取り除く何らかの行動。その場合は、「オートコンプリートオフ」ラジオが選択されているときに呼び出すだけです。

プラグインにそのオプションがない場合は、テキストフィールドに作成するだけです。オートコンプリートを添付した最初のもの、それなしの2番目のもの。次に、チェックボックスに基づいてそれらを切り替えます。

+0

は、私はいくつかの追加情報を含むように私の質問を編集し無効にします。 –

0

は値を持つラジオボタンを「」オートコンプリートと値「B」を持つものを可能にすることを与えられ、それ

$(".myRadio[value='a']").click(function() { 
    $('#intext').autocomplete('enable'); 
} 
$(".myRadio[value='b']").click(function() { 
    $('#intext').autocomplete('disable'); 
} 
+0

投稿したコードの値をフォームの実際の値に変更しましたが、2番目のラジオボタンをクリックしても自動完了は無効になりません。 –

+0

私はあなたのスクリプトにいくつかのアラートを追加しようとしましたが、ラジオボタンをクリックしても関数は呼び出されません。 –

+0

@SherwinFlight遅れて返信して、編集した投稿を確認してください –

関連する問題