0

私はjQueryを初めて使用し、何かを理解するのに問題があります。

ページの下部にあるこの関数は、オートコンプリート機能をテキストボックスに添付するために呼び出されますが、この部分は正常に機能しています。オートコンプリートを有効にするために呼び出されるコードは次のとおりです。

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

ただし、検索ボックスには、2つの異なるタイプの検索用の2つのラジオボタンが含まれています。オートコンプリート機能は、1種類の検索でのみ使用できます。

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

編集

オートコンプリートスクリプトには.autocomplete( "disable")メソッドがありますが、どのラジオボタンがチェックされているかに基づいてそれを有効/無効にする方法がわかりません。

編集2

jQuery UIオートコンプリートを使用しているので、「RoryMcCrossan」によって提案されたメソッドを機能させようとしています。ラジオボタンと検索ボックスのコードは次のとおりです。

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のエラーコンソールにはエラーが表示されません。

4

4 に答える 4

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
    });
}
于 2012-04-16T07:44:07.957 に答える
0

最善の解決策は、2つのラジオボタンのいずれかが選択されているときにオートコンプリートを無効にすることです。jQueryプラグイン呼び出しの最初のパラメーターとしてmethodnameを指定して、jQueryUIメソッドを呼び出します。たとえば、次のようになります。」

// 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()、選択したラジオボタンがチェックされたときに表示したくないものを非表示にします。

$('.classOfTheTwoRadioButtons').change(function(e) {
  var $e = $(e.target);
  $('#firstTextBox').toggle($e.val() === 'value1');
  $('#secondTextBox').toggle($e.val() === 'value2');
});
于 2012-04-16T07:42:13.310 に答える
0

autocomplete()プラグインに、プラグインのdestroy動作を削除する何らかのアクションがあるかどうかを確認する必要があります。その場合は、「オートコンプリートオフ」ラジオが選択されているときに呼び出してください。

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

于 2012-04-16T07:43:08.953 に答える
0

値が「a」のラジオボタンはオートコンプリートを有効にし、値が「b」のラジオボタンはオートコンプリートを無効にします。

$(".myRadio[value='a']").click(function() {
    $('#intext').autocomplete('enable');
}
$(".myRadio[value='b']").click(function() {
    $('#intext').autocomplete('disable');
}
于 2012-04-16T08:07:13.263 に答える