0

WP User FrontendというWordpress用のプラグインを使用しています。基本的に、ユーザーはウェブサイトのフロントエンドから投稿できます。

ユーザーが自分でタグを追加できる機能がありますが、これは単なる入力テキスト フィールドであり、無数の新しいタグを作成してほしくありません。

したがって、基本的に私が望むのは、手動入力を無効にしながら、タグを入力フィールドに追加するいくつかのボタンをクリックできるようにすることです。

4

2 に答える 2

1

チェックボックスの入力を、元のタグの入力に必要な形式 (たとえば、スペースで区切られた単語の文字列) に変換するスクリプトが必要になります。これは、元の入力の下のページにチェックボックスを挿入し、結果の値を元のフィールドに挿入して、同じように投稿されるようにするスクリプトの例です。(表示したくない場合は、元のフィールドを非表示にすることができます。) http://jsfiddle.net/zLVTp/8/

var tags = ['cows', 'sheep', 'dogs'],
    inp, label, ch = document.createElement('fieldset'),
    f = document.getElementById('tagField'); 
        // ^ The original input has id=tagField
f.readOnly = true;
for (var i = 0; i < tags.length; i++) {
    inp = document.createElement('input');
    label = document.createElement('label');
    label.innerHTML = tags[i];
    label.htmlFor = 'tag_' + tags[i];
    inp.type = "checkbox";
    inp.name = "tagSet";
    inp.className = 'tagCBs';
    inp.value = tags[i];
    inp.id = 'tag_' + tags[i];
    ch.appendChild(inp);
    ch.appendChild(label);
    inp.onchange = (function() {
        var th = inp;
        return function() {
            var sp, r = [];
            if (th.checked && f.value.indexOf(th.value) == -1) {
                if (f.value == '') f.value = th.value;
                else f.value += ' ' + th.value;
            }
            else if (!th.checked) {
                sp = f.value.split(' ');
                for (var j = 0; j < sp.length; j++) {
                    if (sp[j] != th.value) r.push(sp[j]);
                }
                f.value = r.join(' ');
            }
        }
    })();
}
f.parentNode.appendChild(ch);​
于 2012-12-06T01:37:04.820 に答える
0

html チェックボックスはあなたのニーズに合っているようですよね?フォームを変更し、テキスト領域をチェックボックスに置き換える必要があります(汚いがシンプルです)

于 2012-12-05T22:04:09.047 に答える