2

href属性を追加または削除しながらボタンの色を変更する JQuery 関数があります。のようなぼかしで開始すると完全に機能します

$("#name").blur(function() {
        var standards_name = $("#name").val();
        var standards_link = $("#standardslink");
        var update_log = $("#update_log");
        if(jQuery.inArray(standards_name, standards) != -1) {
            if(companyid !== null) {
                standards_link.attr("href", basic_href + "?standards_name=" + standards_name + "&company_id=" + companyid);
            } else {
                standards_link.attr("href", basic_href + "?standards_name=" + standards_name);
            }   
            standards_link.css("color","#2EE52B");
        } else if(standards_name == "") {   
            standards_link.removeAttr("href");
            standards_link.css("color","black");
            update_log.hide();
        } else {
            standards_link.removeAttr("href");
            standards_link.css("color","#FF0011");
            update_log.hide();
        } 
    });

しかし、オートコンプリート ドロップダウン リストから選択したときに開始されるようにしたいと考えています。ここはもう手がつけられないところです。変数「standards_name」を手動で設定すると、貼り付けられたコードが機能します。たとえばvar standards_name = "xxxx";ui.item.ticker_name値を変数に渡す必要があります。(「standards」配列と「companyid」はPHP json_encode、スクリプトの前半で設定されて渡され、問題なく動作します)

コードは次のとおりです。

$(function() {

        $("#name").autocomplete({
            source: "../autocomplete.php",
            minLength: 2,
            select: function(event, ui) {
            $('#name').val(ui.item.ticker_name);
            $('#mktcap').val(ui.item.mkt_cap);
            var standards_name = ui.item.ticker_name;
            var standards_link = $("#standardslink");
            var update_log = $("#update_log");
            if(jQuery.inArray(standards_name, standards) != -1) {
                if(companyid !== null) {
                    standards_link.attr("href", basic_href + "?standards_name=" + standards_name + "&company_id=" + companyid);
                } else {
                    standards_link.attr("href", basic_href + "?standards_name=" + standards_name);
                }   
                standards_link.css("color","#2EE52B");
            } else if(standards_name == "") {   
                standards_link.removeAttr("href");
                standards_link.css("color","black");
                update_log.hide();
            } else {
                standards_link.removeAttr("href");
                standards_link.css("color","#FF0011");
                update_log.hide();
            } 
            }     

        });
});  
4

2 に答える 2

4

最も簡単な解決策は、select ハンドラーでごまかすことです。

$("#name").attr("standards_name",ui.item.ticker_name);

そして最初のブロックでは、簡単にできます

  var standards_name = $("#name").attr("standards_name");

jQuery Data 関数を使用してすべてのオブジェクトを保存することをお勧めします:-)

于 2012-07-17T12:58:34.903 に答える
1

使用する

$("#name").autocomplete({
 source: function (request, response) {
/*Souse code here*/
},
select: function (e, i){
/*Selection code here inorder to get value use i.item.val*/

}
})
于 2012-07-20T13:29:49.310 に答える