0

4つのテキストボックスの入力を取得し、ラジオのチェックボックスオプションに基づいて表示しようとしています。私はここでそれについてもっと議論しました:

複数のラジオボタンを備えたフォームの最も効率的なコーディングスタイル

次のコード行で問題が発生しています。

//Gets value from input boxes  into array
var values = $('.names').map(function() { 
  if(this.value != '') return this.value; 
}).get();

//Check radio boxes
var selectedValue = $('input[name=friend]:checked').val();

//Determines array length
var length = values.length;

//if only one name
if (length==1) {
  switch(selectedValue) {
    case "na":
      values = values;
      break;
    case "van":
      values = values.join("och van");
      break;
    case "vanner":
      values = values.join("och vanner");
      break;
  }
}
alert(selectedValue);

変数「values」に値「ochvan」または「ochvanner」は追加されません。独立して実行すると、すべてが機能します。つまり、「values」は名前を返し、「selectedValue」はチェックされたラジオボックスを返し、「length」は配列内の要素の数を返します。しかし、Ifステートメントを介してそれを結合しようとすると、大文字と小文字を切り替えても機能しません。

問題のHTMLはここにあります:

    <div id="inputboxes">
      <input type="text" name="name1" id="names1" class="names" value="" placeholder="1) Name Here . . .">
      <input type="text" name="name2" id="names2" class="names" value="" placeholder="2) Name Here . . .">
      <input type="text" name="name3" id="names3" class="names" value="" placeholder="3) Name Here . . .">
      <input type="text" name="name4" id="names4" class="names" value="" placeholder="4) Name Here . . .">
    </div>
  </li>
</ul>
<ul>
  <li>
    <div id="radios1">
      <input type="radio" id="na" value="na" name="friend" class="{src:'img/n.people.png',checked:'img/n.people.c.png',hover:'/img/unchecked.png'}"  checked="checked"/> 
      <input type="radio" id="van" value="van" name="friend" class="{src:'img/o.person.png',checked:'img/o.person.c.png',hover:'/img/unchecked.png'}"  /> 
      <input type="radio" id="vanner" value="vanner" name="friend" class="{src:'img/m.people.png',checked:'img/m.people.c.png',hover:'/img/unchecked.png'}"  /> 
    </div>
4

2 に答える 2

0

問題は、結合には結合する要素がない (配列には要素が 1 つしかない) ため、区切り文字列が配列に配置されないことです。実際にそれらの間に何かを挿入するには、結合用にさらに 2 つの要素が必要です。これはどこにも綴られていないことに気付きましたが、名前からある程度明らかなはずです。

于 2012-12-02T16:27:21.977 に答える
0

修理済み。

最初に変数を定義し、次のように置き換えました。

var och = " och ";
var van = " och vän"
var vanner =" och vänner";
var nameout;

および更新された IF ステートメント:

if (length==1)
switch(selectedValue)
 {
   case "na":
   nameout = values;
   break;
   case "van":
   nameout = values + van;
   break;
   case "vanner":
   nameout = values + vanner;
   break;

 }
}
于 2012-12-02T16:31:51.783 に答える