0

ここにある他のいくつかのスレッドに基づいて、探しているのは json_encode() だと思いますが、JavaScript 関数で出力をどのように使用できるかはよくわかりません。私がやろうとしているのは、ユーザーが必要に応じて追加の選択リストを追加できるようにし、最初の選択リストを作成するために使用する PHP 関数からそれらの選択オプションを設定できるようにすることです。現時点での私のJavaScriptは次のとおりです。

<script type="text/javascript">
var assigneeCounter = <?php print checkdata("assignee_count", $formvalues, "1"); ?>;

function addInput(fieldlabel, inputclasses, inputCounter, fieldtype = 'input', selectoptions = false){
  window[inputCounter]++;
  var cleanlabel = fieldlabel.replace(/[^a-zA-Z 0-9]+/g,'');
  var cleanlabel = cleanlabel.replace(/\s+/g, '_').toLowerCase();
  var newdiv = document.createElement('div');
  newdiv.id = cleanlabel + window[inputCounter];
  if (fieldtype == 'input') {
    newdiv.innerHTML = '<div class="form-item"><label for="' + cleanlabel + '_' + window[inputCounter] + '">' + fieldlabel + ' #' + window[inputCounter] + '</label><input type="text" name="' + cleanlabel + '_' + window[inputCounter] + '" id="' + cleanlabel + '_' + window[inputCounter] + '" value="" class="' + inputclasses + '"><span class="space"><a href="javascript:removeInput(\'' + cleanlabel + '\',\'' + inputCounter + '\',\'' + window[inputCounter] + '\');">Remove</a></span>';
  }
  else if (fieldtype == 'select') {
    alert(selectoptions);
    newdiv.innerHTML = '<div class="form-item"><label for="' + cleanlabel + '_' + window[inputCounter] + '">' + fieldlabel + ' #' + window[inputCounter] + '</label><select name="' + cleanlabel + '_' + window[inputCounter] + '" id="' + cleanlabel + '_' + window[inputCounter] + '" class="' + inputclasses + '">
      <span class="space"><a href="javascript:removeInput(\'' + cleanlabel + '\',\'' + inputCounter + '\',\'' + window[inputCounter] + '\');">Remove</a></span>';
  }
  document.getElementById(cleanlabel + "_additions").appendChild(newdiv);
  document.getElementById(cleanlabel + "_count").value = window[inputCounter];
}
function removeInput(fieldlabel, inputCounter, fieldID){
  var element = document.getElementById(fieldlabel + fieldID);
  document.getElementById(fieldlabel + "_additions").removeChild(element);
  window[inputCounter]--;
  document.getElementById(fieldlabel + "_count").value = window[inputCounter];
}
</script>

次のように HTML で関数を呼び出しています。

<div id="assignee_additions"></div>
<p><a href="javascript:addInput('Assignee','required-text', 'assigneeCounter', 'select', '<?php print json_encode($assignto); ?>');">Add Another Assignee</a></p>

「fieldtype」の値を入力に設定すると、うまく機能し、期待どおりに別の入力フィールドが作成されます。削除機能もその仕事をします。しかし、私が本当に必要としているのは、入力フィールドではなく選択フィールドであり、JavaScript の知識が不足していることが私を殺しています。

また、ここで jQuery がより良い選択肢であると誰かが考えているようであれば、私もそれに対してオープンです。

前もって感謝します!

4

1 に答える 1

1

JSON別のファイルで作成できphpます。次に、javascript関数からAJAX呼び出しを使用して、生成された を取得できますJSON

タグのjson_encode値とキーが必要だと思いますよね?<option>したがって、呼び出しが成功した後、値をAJAXデコードして新しいオプションを作成します。JSON

jQuery の大まかなコードは次のようになります。

$.ajax({
    url: 'giveMeJSON.php',
    dataType: 'json',
    success: function(data){
        $.each(data.options, function(index){
            $('<option>').val($(this).value).text($(this).text).appendTo($('#select_id'));
        }
    }
})

$.ajaxおよびAJAXについてお読みください。

于 2012-09-20T15:53:15.793 に答える