0

jquery tokeninputプラグインを使用していますが、jsonトークン入力データをフォームのどこかにある値に依存させたいと考えています。私のコードは次のようになります。

jQuery(function() {
  var bparam;
  if ($('#tokens')) {
    bparam = $('#select_menu').val();
    return $('#tokens').tokenInput(("/tokens.json?b=" + bparam)({
      theme: 'facebook',
    }));
  }
});

したがって、select_menu divの値が124の場合、プラグインは/tokens.json?b=124などのリクエストを行う必要があります。

どういうわけかこれはうまくいかず、理由はわかりません。私はまだJavaScriptの初心者です。助けていただければ幸いです。

4

2 に答える 2

0

if ($('#tokens'))空の配列([])を返すので、それが常にtrueと評価されるかどうかは関係ありません。私はあなたが欲しいと思いif ($('#tokens').length)ます。配列に項目がある場合はtrueと評価され、空の場合はfalseと評価されます。

あなたをつまずかせるのは、変数が設定されているときです。bparamページの読み込み時に設定されています。イベントをトリガーしているものが発生したときに設定されるようにバインドします。

于 2012-10-03T21:36:42.287 に答える
0

私がしなければならなかった長さ>0の呼び出しは別として(Stuart NelsonとShuslを指摘してくれてありがとう!)、coffeescriptの文字列補間がどういうわけか私が望むように機能していなかったことがわかりました。javascriptに変換された同じコードが実際に機能しました。Coffeescriptは次のように翻訳されていました:

jQuery(function() {
  var bparam;
  if ($('#tokens').length > 0) {
    bparam = $('#select_menu').val();
    return $('#tokens').tokenInput(("/tokens.json?b=" + bparam)({
      theme: 'facebook',
    }));
  }
});

これで、作業コードはjavascript / jqueryで直接記述され、次のようになります。

jQuery(function() {
if ($("#tokens").length > 0) {
    var bparam
    bparam = $('#select_menu').val();
      return $('#tokens').tokenInput("/tokens.json?b=" + bparam, {
        theme: 'facebook',
      });
   }
});

これらの余分な括弧に注意してください

(("/tokens.json?b=" + bparam)

一方

("/tokens.json?b=" + bparam 

実用的なソリューションです。

于 2012-10-03T22:09:13.433 に答える