0

フォーム入力に使用するテンプレートがあるアプリがあります。

ページには同じ入力/ラベルの複数のバージョンがあるため、入力 ID をハードコーディングすることはできません。

むしろ、attr をバインドするために使用する関数を作成しました (入力の場合は「id」、ラベルの場合は「for」)。

これは Chrome と IE9 ではうまく機能しますが、IE8 と IE7 では失敗します。

ラベルと入力があります:

<label data-bind="attr: {for: doId('name_first')}">First Name*</label>
<input type="text" name="name-first" data-bind="value: name_first, attr: {id: doId('name_first')}" />

私のノックアウトコード:

function MyViewModel() {
    var self = this;

    self.person_id = ko.observable('1234');
    self.name_first = ko.observable();

    self.doId = function(seed){
        return seed + "-" + self.person_id();
    };
}

ko.applyBindings(new MyViewModel());

JsFiddleは IE8 では動作しないようです。そのため、ここにjsbinがあります。

誰でもこれを経験し、回避策がありますか?

入力/ラベルを使用してテンプレートを繰り返すことは、よくある問題です。

-- スコット


有効期限のある Cookie が IE9 で設定されない

単一のタスクが Cookie を設定する単純なコントローラー メソッドがあります。

def consume
    cookies.signed[:luke_luke] = {:value => 'luke'}
    cookies.signed[:remembertoken] = {
      :value => "user",
      :expires => 1.hour.from_now
    }
    render :text => "Failure"
end

IE 9 をロードし、コンソールに document.cookie と入力すると、luke_luke の値だけが返されますが、トークンは覚えていません。記憶トークンの有効期限を削除すると、すべて問題ありません。何を与える?

Rails 3.2.13 の使用

4

1 に答える 1

0

forは JavaScript の予約済みキーワードであり、IE 9 未満でプロパティ名として使用すると問題が発生する可能性があります。for解決策は、次のように引用符を付けることです。

attr: { 'for': doId('name_first') }
于 2013-05-29T15:03:38.837 に答える