0

条件セレクターに問題があります。いくつかの入力フィールドがあります。必須属性を持つ空のフィールドの境界線の色を変更したい。

私が試したこと:

$("[required='required']").css({
      "border": "1px solid #FF0000",
      "background": "#FFEFFF"
  });

  $("[required='required']").blur(function ()  {
    comp(this);
  });

$("[required='required']").keyup(function ()  {
    comp(this);
  });

$("[required='required']").click(function ()  {
    comp(this);
  });

  function comp(a) {
      if ($(a).val() !== "")
          $(a).css({
          "border": "1px solid #ccc",
          "background": ""
      });

      else $(a).css({
          "border": "1px solid #FF0000",
          "background": "#FFEFFF"
      });

  }

ここにリンクがあります:http://jsfiddle.net/guwanchat/HjzVu/14/

4

1 に答える 1

1

あなたの問題は、comp関数に従って要素を初期化していないことだと思います。

これから開始コードを変更しました:

$("[required='required']").css({
      "border": "1px solid #FF0000",
      "background": "#FFEFFF"
});

これに:

$("[required='required']").each(function () {
    comp(this);
});

jQueryeach関数を使用して、セレクターに一致するオブジェクトを繰り返し処理し、comp 関数を呼び出してそれらを初期化します。

jQuery.each()

説明: オブジェクトと配列の両方をシームレスに反復処理するために使用できる汎用イテレータ関数です。長さのプロパティを持つ配列および配列のようなオブジェクト (関数の引数オブ​​ジェクトなど) は、0 から長さ 1 までの数値インデックスによって反復されます。他のオブジェクトは、名前付きプロパティを介して反復されます。

ここにフィドルがあります:http://jsfiddle.net/HjzVu/19/

于 2013-06-24T06:31:36.923 に答える