33

入力/選択などのスタイルを設定するためにjQuery Uniformを使用しています。ただし、チェックボックスは機能しなくなりました。私はappendingajax 呼び出しから送信されたデータです。読み込まれたら$.uniform.update("input:checkbox")、新しい html を更新するために使用します。入力をチェック (チェック解除) しようとすると、一度しか機能しません。もう一度チェックを外したいのですが、まったく変わりません。

すべてのアクション (つまり、、など) が関数の下にあるように、Uniform Javascriptを変更しようとしました。(つまり)。これにより、何も機能しなくなります。clickfocusblur.live.live("click",

アップデート:

私はUniform JSを完全に読んで、問題を発見しました:

if(!$(elem).attr("checked")){
    //box was just unchecked, uncheck span
    spanTag.removeClass(options.checkedClass);
}else{
    //box was just checked, check span.
    spanTag.addClass(options.checkedClass);
}

.attr("checked")構文が失敗します。常に false を返します。なんで?知らない。これと同様に、属性inputを削除したり、checked属性を設定したりするためにオリジナルを更新することはありませんchecked

公式ウェブサイトを調べたところ、チェックボックスの入力が更新されないことがわかりました。だからそれは私だけではありませんxP

私は少しグーグルして、チェックボックスがチェックされているかどうかを確認するためのさまざまな方法を見つけましたが、次の方法は失敗します:

if ($(elem).attr("checked")) // The original.
if ($(elem).attr("checked") == true)
if ($(elem).is(":checked"))
if ($(elem).checked)
// and:
var check = $(elem).match(/checked=/);
if (check == null)

指導の言葉はとてもありがたいです〜:3

4

8 に答える 8

64

シンプルなソリューション

これはUniformJs、フォームの値を動的に変更する必要がある場合、均一な要素の変更を更新する必要があるためです。

$('#checkbox').prop('checked',true);
$.uniform.update();

編集

のみを更新したい場合#checkbox

$('#checkbox').prop('checked',true);
$.uniform.update('#checkbox');
于 2013-05-13T07:16:24.073 に答える
28

これを行うだけです:

$('#checkbox').prop('checked',true).uniform('refresh');
于 2015-01-25T13:37:42.743 に答える
7

これは少し遅れるかもしれませんが、誰かの助けになることを願っています. 事前にチェックされたチェックボックスを探すように、統一コードに数行追加する必要がありました。このコードは 262 行目から始まります。ユニフォームバージョン 1.7.5 を使用しています。「John によって追加された」メモの間の行は、私が追加したものです。

        "click.uniform touchend.uniform": function(){
      if(!$(elem).attr("checked")){
        //box was just unchecked, uncheck span
        spanTag.removeClass(options.checkedClass);
      // Added by John to look for checkboxes with the attr "checked" that have been click to uncheck
      }else if(!$(elem).is(':checked')){
        spanTag.removeClass(options.checkedClass);
      // end addition by john
      }else{
        //box was just checked, check span.
        spanTag.addClass(options.checkedClass);
      }
    },
于 2011-09-08T17:53:56.043 に答える
3

しばらく経ちましたが、同じ問題がありましたが、簡単な解決策で解決しました。

ユニフォームはチェックボックスに a を追加し、チェックされているかどうかにかかわらずspanクラスを提供しますが、ページの読み込み時のみです。checkedページが既にロードされているときにチェックボックスをオンまたはオフにすると、チェックがオフ (またはチェック)spanされますが、それ以上になるため、更新されていないと表示されるため、手動で行う必要があります。

$('#myDiv input[type=checkbox]').attr('checked',true);
$('#myDiv input[type=checkbox]').parent().addClass('checked');

また

$('#myDiv input[type=checkbox]').attr('checked',false);
$('#myDiv input[type=checkbox]').parent().removeClass('checked');

最もクリーンなソリューションではないかもしれませんが、すべてのブラウザーで問題なく動作します。

于 2013-01-30T19:08:09.660 に答える
2

jQuery 1.6.4attr()では、jquery.uniform.js で使用される関数の意味が変更されました。 attr()属性の現在の状態ではなく、ページがロードされたときの属性の状態を返すようになりました。と呼ばれる代替関数がありprop()、これは以前に行われていた仕事attr()を行います。

attr("checked")プラグインを修正するには、各出現箇所をに置き換えますprop("checked")。また、 に変更attr("disabled")prop("disabled")ます。

これでプロジェクトが修正されるはずです。それは私のために働いた;-)

参照: https://github.com/pixelmatrix/uniform/pull/167。後方互換性を向上させて問題に対処しようとしています。

于 2011-10-19T03:40:59.947 に答える
1

Jquery の最新バージョンは、:checked 値を評価するために別の方法を使用していると思います。少し古いバージョン(理想的ではありませんが)を使用すると、この問題が解決されました。それは少し前のことですが、PixelMatrix はまだ Uniform を更新していないようです。

于 2011-09-26T10:20:20.260 に答える
0

のようなものを使用できませんでした

$("#checkbox").attr("checked", "true");

チェックボックスをオンにするには、

$("#checkbox").removeAttr("checked");

チェックを外すには?

于 2011-07-09T21:57:03.600 に答える
0

.attr()次のように変更する必要はありません.prop()

    "click.uniform touchend.uniform": function(){
        if(!$(elem).attr('checked')){
            //box was just unchecked, uncheck span
            spanTag.removeClass(options.checkedClass);

            //Added by PingOn
            $(elem).removeAttr('checked');
            //end addition by PingOn

            // Added by John
        }else if(!$(elem).is(':checked')){
            spanTag.removeClass(options.checkedClass);
            // end addition by john

            //Added by PingOn
            $(elem).removeAttr('checked');
            //end addition by PingOn
        }else{
            //box was just checked, check span.
            spanTag.addClass(options.checkedClass);

            //Added by PingOn
            $(elem).attr('checked','true');
            //end addition by PingOn
      }
于 2012-08-10T01:24:36.423 に答える